k8s之Pod管理
pod.xml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: daocloud.io/library/nginx
- 创建
[root@node1 ~]# kubectl create -f pod.yaml
pod/nginx-pod created
- 查看
[root@node1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 19s
[root@node1 ~]# kubectl describe pod nginx-pod
- 更新
编辑yaml文件后删除原来pod重新创建
kubectl replace --force -f pod.yaml
- 删除
[root@node1 ~]# kubectl delete -f pod.yaml
- 资源限制
- requests保证最小使用
- limits 最大使用,cpu限制为比例
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: daocloud.io/library/nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
- 调度约束
- nodeName:强制调度 指定节点的IP地址
- nodeselector 匹配调度
为node节点创建一个标签
[root@node1 ~]# kubectl label nodes 192.168.57.14 env_role=dev
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
nodeName: 192.168.57.14
#nodeSelector:
# env_role: dev
containers:
- name: nginx
image: daocloud.io/library/nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
重启策略
三种重启策略Always: 默认策略 容器停止 总是重建
OnFailure: 当容器异常退出 状态非0时才重启
Never: 从不重启容器
spec:
restartPolicy: OnFailure
健康检查
提供Probe机制 有两种类型
- livenessProbe
如果检查失败 将杀死容器 然后根据restartPolicy来具体操作 - readinessProbe
如果检查失败 会把pod从service endpoints中剔除
- livenessProbe
Probe支持三种检查方法
- httpGet
发送http请求 返回200-400 状态为成功 - exec
执行shell命令 返回状态0成功 - tcpSocket
发起Tcp socket建立成功
- httpGet
pod.yaml
spec:
containers:
- name: nginx
image: daocloud.io/library/nginx:latest
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /index.html
port: 80
- 问题定位
kubectl describe pod kubectl -f logs -f 类似tail参数一样 kubectl exec -it
k8s之Pod管理
http://www.jcwit.com/article/185/