资源限制
pod和container的资源请求和限制
#cpu上限
spec.containers[].resources.limits.cpu
#内存上限
spec.containers[].resources.limits.memory
#创建时分配的基本cpu资源
spec.containers[].resources.requests.cpu
#创建时分配的基本内存资源
spec.containers[].resources.requests.memory
示例演示(在master1端操作)
- 创建pod2.yaml文件
vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:
name: frontend
#Pod资源的名称
spec:
containers:
- name: db
#容器1的名称
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
- name: wp
#容器2的名称
image: wordpress
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
- 创建资源
kubectl apply -f pod2.yaml
- 查看资源详细信息
kubectl describe pod frontend
- 查看对应节点上Pod资源的占用情况
kubectl describe nodes 192.168.142.130
- 查看命名空间
kubectl get ns
重启策略
1:Always:当容器终止推出后,总是重启容器,默认策略
2:Onfailure:当容器异常退出(退出码为非0)时,重启容器
3:Never:当容器终止退出,从不重启资源
注意:k8s中不支持重启pod资源,只有删除重建
示例演示
- 默认的重启策略是Always
kubectl edit deploy
#输入/restartPolicy查找
restartPolicy: Always
#没有设定重启策略时默认为Always
#创建pod3.yaml文件
vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: busybox
image: busybox
args:
#参数
- /bin/sh
#在shell环境中
- -c
#command命令
- sleep 30; exit 3
#容器启动后休眠30s,异常退出返回状态码为非0值
#创建资源
kubectl apply -f pod3.yaml
kubectl get pods
#此时会出现Error报错,因刚刚设置的异常退出,一会再查看时RESTARTS重启值会变为1、
- 添加重启策略Never
#修改pod3.yaml文件
vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 10
#修改休眠时间为10s
restartPolicy: Never
#添加重启策略
#创建资源
kubectl apply -f pod3.yaml
健康检查,又称为探针(Probe)
- 注意:规则可以同时定义
livenessProbe 如果检查失败,将杀死容器,根据Pod的restartPolicy来操作
ReadinessProbe 如果检查失败,kubernetes会把Pod从service endpoints后端节点中中剔除
- Probe支持三种检查方法
httpGet 发送http请求,返回200-400范围状态码为成功
exec 执行Shell命令返回状态码是0为成功
tcpSocket 发起TCP Socket建立成功
示例演示
- 创建资源
#创建pod4.yaml文件
vim pod4.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy
#创建一个空文件,休眠30s,删除这个空文件
livenessProbe:
exec:
#探测健康
command:
#command命令
- cat
#执行查看命令
- /tmp/healthy
#创建的空文件
initialDelaySeconds: 5
#容器创建完成5秒之后开始健康检查
periodSeconds: 5
#检查的间隔频率为5秒
- 刷新资源
#创建资源
kubectl apply -f pod4.yaml
kubectl get pods
#当中状态不断改变,就代表它正在不断的进行检查,然后不断的执行重启策略,其中的RESTARTS重启值也会随之增加