在 master 节点/root 目录下编写 YAML 文件 deployment.yaml 创建 Deployment,具体 要求如下: (1)Deployment 名称:nginx-app; (2)包含 3 个副本; (3)镜像使用 nginx:1.11.9 完成后使用该 YAML 文件创建 Deployment。然后通过滚动升级的方式更新镜像版本为 1.12.0,并记录这个更新,最后,回滚该更新到之前的 1.11.9 版本。
时间: 2023-05-31 11:06:41 浏览: 129
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.11.9
ports:
- containerPort: 80
#升级镜像版本
kubectl set image deployment/nginx-app nginx=nginx:1.12.0 --record=true
#查看更新记录
kubectl rollout history deployment/nginx-app
#回滚到之前版本
kubectl rollout undo deployment/nginx-app --to-revision=1
相关问题
在 master 节点/root 目录下编写 YAML 文件 deployment.yaml 创建 Deployment
以下是一个示例的 deployment.yaml 文件,用于创建一个名为 my-app 的 Deployment,其中包含一个名为 my-container 的容器,该容器使用 nginx 镜像,并在端口 80 上监听请求:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
```
要创建此 Deployment,请在 master 节点的终端中运行以下命令:
```
kubectl apply -f deployment.yaml
```
此命令将读取 deployment.yaml 文件,并在 Kubernetes 集群中创建 my-app Deployment。其中,replicas 指定了要创建的 Pod 数量,selector 指定了如何选择要控制的 Pod,template 指定了 Pod 的模板,其中包含了要运行的容器的信息。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 5 template: metadata: labels: app: nginx spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringEXecution: nodeSelectorTerms: - matchExpressions: - key: gpu operator: In values: - "true" containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/wsl_images/nginx:latest imagePullPolicy: IfNotPresent ports: - containerPort: 80 执行后报错[root@server1 ~]# kubectl apply -f nginx.yaml Error from server (BadRequest): error when creating "nginx.yaml": Deployment in version "v1" cannot be handled as a Deployment: strict decoding error: unknown field "spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringEXecution"
根据你提供的错误信息,这是由于 Deployment 中的 spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringEXecution 字段在 Kubernetes 版本中没有被识别导致的。这个字段在 Kubernetes 1.18 版本之后的版本才被引入。
你可以将该字段修改为 `requiredDuringSchedulingIgnoredDuringExecution` (注意拼写),然后再次尝试应用该部署文件。修改后的部署文件如下所示:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 5
template:
metadata:
labels:
app: nginx
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gpu
operator: In
values:
- "true"
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/wsl_images/nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
```
然后使用 `kubectl apply -f nginx.yaml` 命令再次尝试部署该文件。
阅读全文