您必须连接到正确的主机。不这样做可能导致零分。
[candidate@base] $ ssh ckad00017
任务目标
在 ckad00017
命名空间中,对 Deployment ckad00017-deployment
进行以下更新:
- 更新 Deployment 以运行 3 个 Pod 副本,并为这些 Pod 添加标签
tier: dmz
。 - 创建一个名为
rover
的 NodePort Service,在 TCP 端口 81 上公开该 Deployment。
步骤一:编辑 Deployment
首先,我们需要编辑 Deployment ckad00017-deployment
来设置副本数和添加标签。
使用如下命令编辑 Deployment:
bash
kubectl -n ckad00017 edit deployments.apps ckad00017-deployment
在打开的编辑器中进行以下修改:
- 设置副本数 :找到
spec.replicas
字段并将其值设置为3
。 - 添加标签 :在
spec.template.metadata.labels
下添加新的键值对tier: dmz
。
示例片段:
yaml
spec:
replicas: 3
template:
metadata:
labels:
tier: dmz # 新增标签
# 其他现有的标签...
保存并退出编辑器,Kubernetes 将自动应用更改并滚动更新 Deployment。
步骤二:创建 NodePort Service
接下来,创建一个 NodePort 类型的服务来暴露 Deployment 在端口 81 上。
可以使用 kubectl expose
命令快速创建服务:
bash
kubectl expose deployment -n ckad00017 ckad00017-deployment --protocol=TCP --target-port=81 --port=81 --type=NodePort --name=rover
这将创建一个名为 rover
的服务,它将通过 NodePort 类型公开 ckad00017-deployment
部署,监听 TCP 端口 81。
步骤三:验证服务是否正常工作
查看服务详情以获取分配的 NodePort(注意,NodePort 的范围通常是从 30000 到 32767):
bash
kubectl get service rover -n ckad00017
输出示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rover NodePort 10.100.200.50 <none> 81:31198/TCP 1m
在这个例子中,外部可通过任意节点的 IP 加上端口号 31198
访问服务。
执行 curl 请求测试服务是否可访问:
bash
curl http://127.0.0.1:31198
如果一切配置正确,你应该能够看到来自 Deployment 的响应内容。
总结
- 成功更新了
ckad00017-deployment
,使其运行 3 个副本,并为所有 Pod 添加了标签tier: dmz
; - 创建了一个名为
rover
的 NodePort 服务,它在每个集群节点的 81 端口上公开了 Deployment; - 使用
curl
测试了服务的可达性,确保其按预期工作。