Kubernetes 修改svc后端endpoint地址
场景:假设在K8S中有A应用需要访问B应用。A应用以svc name访问B应用,此时B应用SVC 后端的pod无法正常工作,不能及时恢复。应用连接失败。现需及时恢复应用将A应用连接K8S外部C应用。在不修改A应用中svc访问方式下同时恢复应用。
一、备份SVC和endpoint的YAML文件
kubectl -n default get svc nginx-app-svc -o yaml > nginx-app-svc.yaml kubectl -n default get ep nginx-app-svc -o yaml >nginx-app-svc-ep.yaml cp nginx-app-svc.yaml nginx-app-svc-change.yaml cp nginx-app-svc.yaml nginx-app-svc-change-ep.yaml
二、将B应用的SVC服务删除修改为新的SVC Name
kubectl -n default delete svc nginx-app-svc vim nginx-app-svc-change.yaml
重新执行修改后的yaml文件
kubectl -n default apply -f nginx-app-svc-change.yaml
三、新建与之前名称一样的svc
与原A先应用中配置访问的svc 名称一致 vim nginx-app-svc-new.yaml apiVersion: v1 kind: Service metadata: name: nginx-app-svc namespace: default spec: clusterIP: None ##设置None ports: - name: dsb port: 80 protocol: TCP targetPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-app-svc ##与SVC的name要一致 namespace: default spec: externalIPs: - 192.168.1.251 ##配置C应用地址 ports: - name: dsb port: 3389 ##C应用暴漏的端口 protocol: TCP targetPort: 3389 kubectl apply -f nginx-app-svc-new.yaml
[root@k8s-master01 ~]# k get svc,ep NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h12m service/nginx-222 ClusterIP 10.96.113.107 <none> 80/TCP 51m service/nginx-app-svc ClusterIP None <none> 80/TCP 76m service/nginx-app-svc-change ClusterIP 10.96.244.232 <none> 80/TCP 108m NAME ENDPOINTS AGE endpoints/kubernetes 172.17.0.2:6443 3h12m endpoints/nginx-222 10.244.0.10:80 51m endpoints/nginx-app-svc 192.168.1.251:3389 74m endpoints/nginx-app-svc-change 10.244.0.7:80,10.244.0.8:80,10.244.0.9:80 108m
A应用中访问