274 words
1 minutes
kubernetes-application_lifecyle_manangment
Rolling Updates and Rollbacks
- Rolling Updates
- 逐个替换Pod,确保应用的高可用性
- 通过Deployment对象实现
# deployment spec
spec:
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
Commands:
- Update:
kubectl set image deployment/my-deployment my-container=my-image:tag
更新镜像,会更新Deployment的spec.template.spec.containers.image
字段,kubectl edit deployment/my-deployment
, 应用新deploymentkubectl apply -f deployment.yaml
- Update Status:
kubectl rollout status deployment/my-deployment
- 查看更新历史:
kubectl rollout history deployment/my-deployment
- 回滚:
kubectl rollout undo deployment/my-deployment [--to-revision=1 指定回滚版本]
Configure Applications
Commands Arguments and Environment Variables
- image中不存在
ENTRYPOINT
时,command
和args
字段会覆盖Dockerfile
中的CMD
字段
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
command: ["nginx", "-g", "daemon off;"]
- image中存在
ENTRYPOINT
时,command
和args
字段会追加到ENTRYPOINT
后
FROM nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]
CMD ["-g", "worker_processes auto;"]
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
spec:
containers:
- name: nginx
image: my-nginx-image
# 覆盖 ENTRYPOINT
command: ["nginx", "-g", "daemon off; worker_processes 8;"] # Dockerfile Entrypoint
# 覆盖 CMD
args: ["-g", "worker_processes 16;"]
- Environment Variables
# sepc
spec:
containers:
- name: my-container
image: my-image
env: # 环境变量
- name: MY_ENV # plain text
value: my-value
- name: MY_ENV_FROM_SECRET # 从secret中获取
valueFrom:
secretKeyRef:
name: my-secret
key: my-key
# 加载全部secret中的环境变量
---
apiVersion: v1
kind: Pod
metadata:
labels:
name: webapp-pod
name: webapp-pod
namespace: default
spec:
containers:
- image: kodekloud/simple-webapp-mysql
imagePullPolicy: Always
name: webapp
envFrom:
- secretRef:
name: db-secret
kubernetes-application_lifecyle_manangment
https://fuwari.vercel.app/posts/kubernetes-application_lifecyle_manangment/kubernetes-application_lifecyle_manangment/