每个Pod中都包含一个或者多个容器,这些容器可以分为两类
- 用户程序所在的容器,数量可多可少
- Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个
- 可以以它为依据,评估整个Pod的健康状况
- 可以在根容器上设置IP地址,其它容器都共享此IP(Pod的IP),以实现Pod内部的网络通信(这里是Pod内部的通讯,Pod之间的通讯采用虚拟二层网络技术来实现,我们当前环境使用的是Calico)
Pod 定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| apiVersion: v1 kind: Pod metadata: name: string namespace: string labels: - name: string spec: containers: - name: string image: string imagePullPolicy: [ Always|Never|IfNotPresent ] command: [string] args: [string] workingDir: string volumeMounts: - name: string mountPath: string readOnly: boolean ports: - name: string containerPort: int hostPort: int protocol: string env: - name: string value: string resources: limits: cpu: string memory: string requests: cpu: string memory: string lifecycle: postStart: preStop: livenessProbe: exec: command: [string] httpGet: path: string port: number host: string scheme: string HttpHeaders: - name: string value: string tcpSocket: port: number initialDelaySeconds: 0 timeoutSeconds: 0 periodSeconds: 0 successThreshold: 0 failureThreshold: 0 securityContext: privileged: false restartPolicy: [Always | Never | OnFailure] nodeName: <string> nodeSelector: obeject imagePullSecrets: - name: string hostNetwork: false volumes: - name: string emptyDir: {} hostPath: string path: string secret: scretname: string items: - key: string path: string configMap: name: string items: - key: string path: string
|
1 2 3 4 5 6 7
| # 查看某种资源可以配置的一级配置 kubectl explain 资源类型 kubectl explain pod
# 查看属性的子属性 kubectl explain 资源类型.属性 kubectl explain pod.metadata
|
在kubernetes中基本所有资源的一级属性都是一样的,主要包含5个部分:
- apiVersion :版本,有kubernetes内部定义,版本号必须用kubectl api-versions查询
- kind :类型,有kubernetes内部定义,类型必须用kubectl api-resources查询
- metadata
- spec
- spec
在上面的属性中,spec是接下来研究的重点,继续看下它的常见子属性:
- containers <[]Object>:容器列表,用于定义容器的详细信息
- nodeName :根据nodeName的值将Pod调度到指定的Node节点上
- nodeSelector <map[]> :根据NodeSelector中定义的信息选择该Pod调度到包含这些Label的Node上
- hostNetwork :是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
- volumes <[]Object> :存储卷,用于定义Pod上面挂载的存储信息
- restartPolicy :重启策略,表示Pod在遇到故障的时候的处理策略