已部署K8s应用并暴露80端口,如何为Deployment添加443端口?
没问题,我来帮你搞定这个事儿。要给已有的Deployment补上443端口,同时确保LoadBalancer能正确转发这个端口,咱们一步步来:
步骤1:导出当前Deployment配置(可选但推荐)
先把现有Deployment的配置导到本地文件,修改起来更直观,还能留个备份:
kubectl get deployment <你的Deployment名称> -o yaml > deployment.yaml
记得把<你的Deployment名称>替换成实际的名字,比如my-web-app。
步骤2:编辑配置添加443端口
打开导出的deployment.yaml,找到spec.template.spec.containers.ports区块——这里应该已经有80端口的配置了,咱们直接加上443的条目:
ports: - containerPort: 80 protocol: TCP name: http - containerPort: 443 protocol: TCP name: https
注意保持YAML的缩进一致,name字段可以自定义,只要清晰好识别就行,比如用https就很直观。
步骤3:应用修改后的配置
保存文件后,用kubectl更新Deployment:
kubectl apply -f deployment.yaml
如果你嫌导出文件麻烦,也可以直接用kubectl edit deployment <你的Deployment名称>在线编辑,修改完保存后,Kubernetes会自动滚动更新你的Pod。
步骤4:更新LoadBalancer Service暴露443端口
你之前只通过LoadBalancer暴露了80端口,现在要让外部能访问443,得同步更新对应的Service:
- (可选)导出Service配置备份:
kubectl get service <你的Service名称> -o yaml > service.yaml
- 编辑
service.yaml,在spec.ports里添加443端口的转发规则:
ports: - port: 80 targetPort: 80 protocol: TCP name: http - port: 443 targetPort: 443 protocol: TCP name: https
这里的port是LoadBalancer对外暴露的端口,targetPort必须和Deployment里的containerPort对应上。
3. 应用Service修改:
kubectl apply -f service.yaml
同样,也可以用kubectl edit service <你的Service名称>在线快速修改。
验证配置是否生效
等Pod滚动更新完成后,你可以用这些命令确认配置已经生效:
# 检查Deployment的端口配置 kubectl get deployment <你的Deployment名称> -o jsonpath='{.spec.template.spec.containers[0].ports}' # 检查Service的端口配置 kubectl get service <你的Service名称> -o jsonpath='{.spec.ports}' # 查看Pod详情确认端口已配置 kubectl describe pod <你的Pod名称>
这样操作后,你的应用就能通过LoadBalancer的443端口对外提供服务啦。
内容的提问来源于stack exchange,提问作者Jaouad ALLALI

