Q1: 创建一个deployment 副本数 3,然后滚动更新镜像版本,并记录这个更新记录,最后再回滚到上一个版本
• 名称: nginx
• 镜像版本: 1.16
• 更新镜像版本: 1.17
A1:
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: aliang-cka
spec:
replicas: 3
selector:
matchLabels:
project: demo
app: java
template:
metadata:
labels:
project: demo
app: java
spec:
containers:
- name: web
image: nginx:1.16
kubectl apply -f deployment.yaml -n aliang-cka
kubectl get pods -n aliang-cka
滚动更新:kubectl set image deployment/nginx nginx=nginx:1.17 -n aliang-cka
记录:kubectl describe deployment nginx -n aliang-cka
回滚:
查看历史版本记录:ubectl rollout history deployment/nginx -n aliang-cka
回滚上一个版本:kubectl rollout undo deployment/nginx -n aliang-cka
此题考查k8s对应用的滚动升级与回滚
Q2: 给web deployment扩容副本数为3
A2:当前web deployment副本数为1
在线扩容副本数为3:kubectl scale deployment web --replicas=3 -n aliang-cka
Q3: 把deployment输出json文件,再删除创建的deployment
导出json文件: kubectl get deployment web -n aliang-cka -o json
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {
"deployment.kubernetes.io/revision": "1",
"kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"web","namespace":"aliang-cka"},"spec":{"replicas":1,"selector":{"matchLabels":{"app":"web","project":"demo"}},"template":{"metadata":{"labels":{"app":"web","project":"demo"}},"spec":{"containers":[{"image":"nginx:1.16","name":"web"}]}}}}n"
},
"creationTimestamp": "2021-11-04T07:35:19Z",
"generation": 2,
"name": "web",
"namespace": "aliang-cka",
"resourceVersion": "313957",
"uid": "af35cd1e-0b02-4adb-960c-0aa7f46c6f6a"
},
"spec": {
"progressDeadlineSeconds": 600,
"replicas": 3,
"revisionHistoryLimit": 10,
"selector": {
"matchLabels": {
"app": "web",
"project": "demo"
}
},
"strategy": {
"rollingUpdate": {
"maxSurge": "25%",
"maxUnavailable": "25%"
},
"type": "RollingUpdate"
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "web",
"project": "demo"
}
},
"spec": {
"containers": [
{
"image": "nginx:1.16",
"imagePullPolicy": "IfNotPresent",
"name": "web",
"resources": {},
"terminationMessagePath": "/dev/termination-log",
"terminationMessagePolicy": "File"
}
],
"dnsPolicy": "ClusterFirst",
"restartPolicy": "Always",
"schedulerName": "default-scheduler",
"securityContext": {},
"terminationGracePeriodSeconds": 30
}
}
},
"status": {
"availableReplicas": 3,
"conditions": [
{
"lastTransitionTime": "2021-11-04T07:35:19Z",
"lastUpdateTime": "2021-11-04T07:35:21Z",
"message": "ReplicaSet "web-7dbc5cbbfb" has successfully progressed.",
"reason": "NewReplicaSetAvailable",
"status": "True",
"type": "Progressing"
},
{
"lastTransitionTime": "2021-11-04T08:13:16Z",
"lastUpdateTime": "2021-11-04T08:13:16Z",
"message": "Deployment has minimum availability.",
"reason": "MinimumReplicasAvailable",
"status": "True",
"type": "Available"
}
],
"observedGeneration": 2,
"readyReplicas": 3,
"replicas": 3,
"updatedReplicas": 3
}
}
删除deployment: kubectl delete deployment web -n aliang-cka
Q4: 生成一个deployment yaml文件保存到/opt/deploy.yaml
• 名称: web
• 标签: app_env_stage=dev
A4: kubectl create deployment web --image=nginx:1.16 -o yaml --dry-run=client > /opt/deploy.yaml
修改标签 : vim /opt/deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app_env_stage: dev
name: web
spec:
replicas: 1
selector:
matchLabels:
app_env_stage: dev
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app_env_stage: dev
spec:
containers:
- image: nginx:1.16
name: nginx
resources: {}
status: {}



