上文说了一下k8s的简单使用,接下来就让我们来具体深入了解一下Pod。为了避免篇幅太长,所以会分成几篇。
目录:
- Pod定义详解
- 静态Pod
- Pod容器共享Volume
一、Pod定义详解
先看一个简单的nginx的Pod定义:
apiVersion: v1
kind: Pod
metadata:
nam: nginx-test
labels:
app: nginx-test
spec:
containers:
- name: nginx-test
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
上述是一个Pod内包含一个容器,容器中运行nginx,容器对外暴漏80端口
Pod定义主要分成四大块:
(1)api
apiVersion: v1
(2)kind
kind: Pod
(3)metadata
metadata是Pod的元数据定义
metadata: #元数据
name: string #Pod名称
namespace: string #Pod所属命名空间,缺省默认是default
labels: #自定义标签列表
- key: value
annotations: #自定义注解列表
- key: value
(4)spec
spec是Pod中容器的详细定义,主要分成以下几块
containers
containers是Pod中的容器列表,数组类型。
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 #单位是core
memory: string #单位是MiB、GiB
livenessProbe: #探针,对Pod各容器健康检查的设置,如几次无回应,则会自动重启
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 #是否允许创建特权模式的Pod