#azure #kubernetes #yaml #azure-aks #azure-load-balancer
#azure #kubernetes #yaml #azure-aks #azure-балансировщик нагрузки
Вопрос:
Я создаю обычный ванильный кластер AKS с реестром контейнеров ACR и развертываю фиктивную службу, что я делал несколько раз раньше и что должно работать, но это не так — служба развертывается без ошибок, я вижу, что модуль и служба активны, порты, похоже, совпадают — но я не могу связаться с приложением, запущенным в модуле.
Вот мой файл YAML:
apiVersion: v1
kind: Service
metadata:
name: dummyapp-prep
spec:
selector:
app: dummyapp-prep
ports:
- protocol: TCP
port: 80
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: dummyapp-prep
spec:
selector:
matchLabels:
run: dummyapp-prep
replicas: 1
template:
metadata:
labels:
run: dummyapp-prep
spec:
containers:
- name: dummyapp-prep
image: dummyappregistry.azurecr.io/dummyappregistry.azurecr.io/dummyapp-prep:dummyapp-prep-18
ports:
- containerPort: 80
imagePullSecrets:
- name: secret
Все развертывается нормально — я вижу службу, и она получает внешний IP:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dummyapp-prep LoadBalancer 10.0.230.4 52.149.106.85 80:32708/TCP 4m24s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 26h
Модуль в порядке, я подключаюсь к нему и сворачиваю приложение на localhost: 80. Тем не менее, просмотр http://52.149.106.85:80 тайм-ауты
Я проверяю Azure Load Balancer — IP зарегистрирован.
Что еще может быть не так?
Ответ №1:
У вас применена неправильная метка. Служба ищет, app: dummyapp-prep
пока модуль и развертывание есть run: dummyapp-prep
. Обратите внимание на run
vs app
названия меток.
Вы также можете проверить, привязана ли служба, проверив объект конечной точки, созданный для вас сервером API, выполнив kubectl describe endpoints dummyapp-prep
. Если в Subsets
разделе не указаны IP-адреса модулей, это будет означать, что служба не может найти модули.