Вход в Кубернетес в АМС - PullRequest
       31

Вход в Кубернетес в АМС

0 голосов
/ 18 декабря 2018

Пожалуйста, помогите мне разобраться с доступностью моего простого приложения.Я создал YML с приложением:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: gcr.io/kubernetes-e2e-test-images/echoserver:2.1
        ports:
        - containerPort: 8080
---
apiVersion: extensions/v1beta1
kind: Service
apiVersion: v1
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
   - name: http
     protocol: TCP
     port: 80
     targetPort: 8080
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp-service
          servicePort: 80
      - path: /hello
        backend:
          serviceName: myapp-service
          servicePort: 80

Затем я создал кластер k8s через kops, вот так все службы k8s поднялись, я могу ввести мастер:

kops create cluster \
--node-count = 2 \
--node-size = t2.micro \
--master-size = t2.micro \
--master-count = 1 \
--zones = us-east-1a \
--name = ${KOPS_CLUSTER_NAME}

Вконец, я не могу добраться до приложения через порт 80, он пишет, что в соединении отказано!Может кто-нибудь сказать мне, в чем проблема?Этот вышеупомянутый yml полностью работает, но в среде minikube (

1 Ответ

0 голосов
/ 19 декабря 2018

Действительно, вы создали ресурс Ingress, но я предполагаю, что вы не развертывали до NGINX Ingress Controller для локального кластера на AWS.Это объяснено здесь о том, как это сделать в целом.

В случае кластера Kubernetes, загруженного с Kops , все более сложно, идля этого необходимо изменить существующий кластер, чтобы использовать специальную надстройку kops: kube-ingress-aws-controller, как описано на странице их проекта github здесь

В текущей форме ваше приложение может быть доступнотолько через Node / AWS Instance external IP на порту, назначенном из диапазона по умолчанию (30000-32767).В настоящее время вы можете проверить назначение порта через kubectl get svc myapp-service), но для этого необходимо сначала открыть его на брандмауэре (правила по умолчанию для входящего трафика запрещают весь трафик, кроме SSH).Основываясь на ваших файлах манифеста развертывания / обслуживания:

NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
myapp-service   NodePort   100.64.187.80   <none>        80:32076/TCP   37m

с портом 32076, открытым во входящих правилах группы безопасности, назначенной моему экземпляру, теперь я могу получить доступ к приложению на NodePort:

curl <node_external_ip>:32076

Hostname: myapp-test-f87bcbd44-8nxpn
Pod Information:
-no pod information available-
Server values:
...