У меня есть одноузловой "кластер" Kubernetes, построенный с kubeadm
в AWS.
Я развернул простое развертывание Nginx с этой конфигурацией:
kind: Deployment
apiVersion: apps/v1
metadata:
name: nginx0-deployment
labels:
app: nginx0-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx0
template:
metadata:
labels:
app: nginx0
spec:
containers:
- name: nginx
image: k8s.gcr.io/nginx:latest
ports:
- containerPort: 80
name: backend-http
Я также создал AWS ELB LoadBalancer:
kind: Service
apiVersion: v1
metadata:
name: nginx0-service
balancing-enabled: "true"
spec:
selector:
app: nginx0-deployment
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
Это создало ELB и открылосоответствующие порты в группе безопасности экземпляра K8s.
{ec2-instance} ~ $ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx0-deployment-548f99f47c-ns75w 1/1 Running 0 3m45s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
service/nginx0-service LoadBalancer 10.106.179.191 acfc4150....elb.amazonaws.com 80:30675/TCP 63s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx0-deployment 1/1 1 1 3m45s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx0-deployment-548f99f47c 1 1 1 3m45s
Однако между ELB и POD по-прежнему что-то не хватает, потому что просмотр к http://acfc4150....elb.amazonaws.com/
не работает - Chrome сообщает ERR_EMPTY_RESPONSE.
Я думаю, это как-то связано с сопоставлением портов ELB 80: 30675 / TCP - я проверил входящий трафик на экземпляре и вижу пакеты для порта 30675 но ничего не возвращается.Как будто сопоставление между этим портом и портом 80 POD не было установлено?
Есть идеи, что мне добавить в мои манифесты, чтобы он работал?
Спасибо!