1.kubernetes中的资源
kubernetes中所有的抽象内容(如模板、java中类等)为资源,资源实例化之后,叫做对象。
以适用性范围来分类:集群资源分类:
1.1 名称空间级别(属于某个名称空间的资源 ): default、kube-system、kube-public、kube-node-lease、ingress-nginx、monitoring
1)工作负载资源(workload):Pod、ReplicaSet(--replicas)、Deployment、StatefulSet(有状态)、DaemonSet、Job、CronJob、ReplicationController(在v1.11版本以后被废除)
2)服务发现及负载均衡型资源(ServiceDiscovery LoadBalance): Sevice、Ingress
3)配置与存储型资源:Volume(存储卷)、CSI(容器存储接口,可以扩展各种第三方存储卷)
4)特殊类型的存储卷:ConfigMap(配置文件)、Secret(保存敏感数据)、DownwardAPI(外部信息输出给容器)
1.2 集群级别(跨名称空间): Namespace、Node、Role、ClusterRole、RoleBinding、ClusterRoleBinding
1.3 元数据型:HPA、PodTemplate、LimitRange(资源限制)
2.Yaml语法
3.yaml文件中,Pod常用字段解释
可使用explais一级一级进行查看:
kubectl explain pod
kubectl explain pod.spec
kubectl explain pod.spec.containers
Pod必须属性:
String version K8S API的版本,目前基本上是v1,可以用kubectl api-versions命令查询
String kind yaml文件定义的资源类型和角色
Object metadata 元数据对象,固定值就写metadata
String metadata.name 元数据对象的名字,这里由我们编写,比如命名Pod的名字
String metadata.namespace 元数据对象的命名空间,默认名称空间default
Obeject Spec 详细定义对象,固定值就写Spec
List spec.containers[] Spec对象的容器列表定义,是个list
String spec.containers[].name 定义容器的名字(可选属性)
String spec.containers[].image 定义用到的镜像名称
Pod可选属性
Strinag spec.restartPolicy Pod重启策略。Always、OnFailure、Never
Object spec.nodeSelector 选择节点运行,定义Node的Label过滤标签
Object spec.imagePullSecret pull镜像的secret名称。name:secretkey格式指定
Boolean spec.hostNetwork 是否使用主机网络模式,默认false。true:不使用docker网桥,使用宿主机node网络,同一台宿主机node则无法启动第二个Pod副本
String spec.containers[].imagePullPolicy 定义镜像的拉取策略,有Always(默认值)、Never、IfNotPresent三个值可选
(1)Always:每次都拉取镜像
(2)Never:表示仅使用本地镜像。没有就不用
(3)IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。
List spec.containers[].command[] 容器启动指令。因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令
List spec.containers[].args[] 指定容器启动指令参数,因为是数组可以指定多个
String spec.containers[].workingDir 指定容器的工作目录
spec.containers[].volumeMounts[] 指定容器内部的存储卷配置
List spec.containers[].ports[] 指定容器需要用到的端口列表
String spec.containers[].ports[].name 指定端口的名称
String spec.containers[].ports[].containerPort 指定容器需要监听的端口号
String spec.containers[].ports[].hostPort 指定容器所在主机需要监听的端口号,默认跟containerPort相同。
注意:设置了hostPort同一台主机无法启动该容器的相同副本(主机端口不能相同,相同则冲突)
String spec.containers[].ports[].protocol 指定端口协议,tcp/udp,默认TCP
List spec.containers[].env[] 指定容器运行前需要设置的环境变量列表
Object spec.containers[].resource 容器资源限制 request、limit
4.示例:
Example_001:
/root/yaml/001_pod_rs_deployment_svc/001_pod.yaml
注意:同一个pod内的多个容器共享一个网络栈,端口不能冲突