У меня был кластер A со статическим IP-адресом на балансировщике нагрузки, но мне нужно было переместить развертывание в службу B, сохраняя при этом тот же статический IP-адрес.
Я сделал следующее:
Сервис балансировки нагрузки на портале GCS под Kubernetes Engine > Services
выглядит так:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
name: contour
namespace: heptio-contour
spec:
clusterIP: x.x.x.x
externalTrafficPolicy: Cluster
ports:
- name: http
nodePort: 31774
port: 80
protocol: TCP
targetPort: 8080
- name: https
nodePort: 30314
port: 443
protocol: TCP
targetPort: 8443
selector:
app: contour
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: e.e.e.e
В настоящее время IP-адрес является временным IP-адресом. e.e.e.e
, и это то, что на вкладке сведений отображается как IP-адреса «внешних конечных точек» и «балансировщика нагрузки».
Если я перейду на связанный балансировщик нагрузки (находится в Network Services > Load Balancing
), Я вижу, что внешний IP-адрес s.s.s.s
(мой статический IP-адрес) для портов 80-443 - я специально пытаюсь получить доступ к портам 80 и 443.
Я обнаружил, что не могу изменить IP-адрес балансировщика нагрузки в нижней части файла конфигурации YAML - после сохранения он просто отменяет мои изменения. Я также пробовал добавить loadBalancerIP: s.s.s.s
ниже clusterIP
но это не имело значения. Наконец, я перешел к статическому IP-адресу и убедился, что правило переадресации направлено на правильный балансировщик нагрузки.
Мой вопрос: какие шаги я должен предпринять, чтобы успешно назначить этот внешний IP-адрес существующему балансировщику нагрузки и передать трафик в кластер?
Сервис Kubernetes:
Балансировщик нагрузки:
Если вы хотите обновить статический IP-адрес балансировщика нагрузки в GKE:
После изменения вашего yaml вам просто нужно запустить его, используя:
kubectl apply -f service.yaml.
Это обновит изменения конфигурации.
Важно отметить, что в GKE каждая модификация должна выполняться в файле yaml, а не с консоли.
Вы можете взглянуть на это руководство для получения дополнительных разъяснений.