指定标签 labels
kubectl explain pod.metadata.labels
metadata:
labels:
k1: v1
k2: v2
添加指定 hosts 记录
pod.spec.hostAliases
spec:
hostAliases:
- ip: 1.1.1.1
hostnames: [“a.com”,”b.com”]
- ip: 2.2.2.2
hostnames: [“aa.com”,”bb.com”]
hostNetwork: true 的 pod ,读取 宿主机的 hosts 并追加 ,但对 宿主机 hosts 没有改动

容器设置变量 env
containers:
- image: 20.0.0.7:8099/tomcat/tomcat:8.5.41-jre8-alpine
name: tomcat-dep-tomcat
env:
- name: tk1
value: tv1
- name: tk2
value: tv2
- image: nginx
name: tomcat-dep-nginx
env:
- name: nk1
value: nv1
- name: nk2
value: nv2
容器运行指令 command args
containers.command[] List
entrypoint 数组,不以 shell 格式执行
覆盖镜像打包时使用的启动命令
不加此参数 以镜像为准
容器启动命令 数组类型可指定多个
containers.args[] List
entrypoint参数,数组类型可指定多个
不加此参数以 镜像中的 cmd 为准
| docker | docker | k8s | k8s | |
|---|---|---|---|---|
| entrypoint | cmd | command | args | 结果 |
| /a.sh | bb cc | /a.sh bb cc | ||
| /a.sh | bb cc | /A.sh | /A.sh | |
| /a.sh | bb cc | BB CC | /a.sh BB CC | |
| /a.sh | bb cc | /A.sh | BB CC | /A.sh BB CC |
k8s 指定了 command ,覆盖 镜像的 entrypoint 及 cmd
k8s 指定了 args ,覆盖 镜像的 cmd
- image: nginx
name: tomcat-dep-nginx
command:
- /bin/sh
- -c
- “echo $(nk1)-$(nk2) > /env.txt;sleep 30”
env:
- name: nk1
value: nv1
- name: nk2
value: nv2
端口暴露
kubectl explain pod.spec.containers.ports <[]Object>
- name
端口名称
containerPort-required-
容器需要监听的端口号
hostPort
容器所在主机监听的端口号,默认和 containerPort 一致
protocol
端口协议, 默认 TCP
容器资源限制
CPU 资源的单位换算:
1 CPU = 1000 millicpu(1 Core = 1000m)
0.5 CPU = 500 millicpu (0.5 Core = 500m)
指定设置容器运行时资源的运行上限,
spec.containers[].resources.limits.cpu String cpu超出,容器不会重启,可压缩资源
spec.containers[].resources.limits.memory String 内存超出,容器重启
容器启动和调度时的请求设置,不够无法启动
spec.containers[].resources.requests.cpu String
spec.containers[].resources.requests.memory String
资源请求
spec.containers[].resources.requests Object
容器启动和调度时的限制设置
spec.containers[].resources.requests.cpu String
cpu请求 ,单位 core ,容器启动时初始化可用数
spec.containers[].resources.requests.memory String
内存请求 ,单位 Mi Gi ,容器启动时初始化可用数
资源限制
spec.containers[].resources.limits Object
指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpu String
cpu限制, 单位 core
用于 docker run —cpu-shares
spec.containers[].resources.limits.memory String
内存限制,单位 Mi Gi
spec:
containers:
- image: 20.0.0.7:8099/ops/myapp:v1
name: app-resource-dep-pod-c1
resources:
requests:
memory: 50Mi
cpu: 50m
limits:
memory: 100Mi
cpu: 100m
重启策略
kubectl explain pod.spec.restartPolicy
Always 默认,无论容器如何停止,kubelet都会尝试重启,有次数限制
OnFailure 容器 非 0 退出码终止,kubelet才会重启
Never 只要容器停止都不会重启
通过 kubelet 重新启动的退出容器将以指数增加延迟启动,10s,20s,40s,80s,160s,300s(5分钟上限) ,并在成功执行 10 分钟后重置
spec:
containers:
- image: 20.0.0.7:8099/ops/myapp:v1
name: myapp
restartPolicy: Always
镜像拉取策略 imagePullPolicy
kubectl explain pod.spec.containers.imagePullPolicy
Always tag 是 latest 的默认项,每次都重新拉取
IfNotPresent tag 不是 latest 的默认项,本地没有再拉取
Never 只使用本地镜像
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
私有仓库secret imagePullSecrets
kubectl explain pod.spec.imagePullSecrets
spec:
containers:
- name: pod
image: 20.0.0.7:8099/ops/nginx:1.7.9
imagePullSecrets:
- name: harbor-secret
kubectl create secret docker-registry harbor-secret \
—docker-server=DOCKER_SERVER \
—docker-username=DOCKER_USER \
—docker-password=DOCKER_PASSWORD、
安全上下文 securityContext
kubectl explain pod.spec.containers.securityContext
spec:
containers:
- name: pod
image: 20.0.0.7:8099/ops/nginx:1.7.9
securityContext:
runAsUser:
runAsGroup:
