Не удается связаться с модулями, локально созданными в экземпляре AWS EC2, с помощью kubernetes. - PullRequest
1 голос
/ 14 октября 2019

Я создал простой деплоймент nginx в экземпляре Ubuntu EC2 и выставил порт через службу в кластере kubernetes, но я не могу пропинговать модули даже в локальной среде. Мои стручки работают нормально, и сервис также успешно создан. Я делюсь некоторыми выводами команд ниже

kubectl получить узлы

NAME               STATUS   ROLES    AGE     VERSION
ip-172-31-39-226   Ready    <none>   2d19h   v1.16.1
master-node        Ready    master   2d20h   v1.16.1

kubectl получить по -о широкий

NAME                                READY   STATUS    RESTARTS   AGE    IP              NODE               NOMINATED NODE   READINESS GATES
nginx-deployment-54f57cf6bf-dqt5v   1/1     Running   0          101m   192.168.39.17   ip-172-31-39-226   <none>           <none>
nginx-deployment-54f57cf6bf-gh4fz   1/1     Running   0          101m   192.168.39.16   ip-172-31-39-226   <none>           <none>
sample-nginx-857ffdb4f4-2rcvt       1/1     Running   0          20m    192.168.39.18   ip-172-31-39-226   <none>           <none>
sample-nginx-857ffdb4f4-tjh82       1/1     Running   0          20m    192.168.39.19   ip-172-31-39-226   <none>           <none>

kubectl получить SVC

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes         ClusterIP      10.96.0.1       <none>        443/TCP        2d20h
nginx-deployment   NodePort       10.101.133.21   <none>        80:31165/TCP   50m
sample-nginx       LoadBalancer   10.100.77.31    <pending>     80:31854/TCP   19m

kubectl описать развертывание nginx-deploy

Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Mon, 14 Oct 2019 06:28:13 +0000
Labels:                 <none>
Annotations:            deployment.kubernetes.io/revision: 1
                        kubectl.kubernetes.io/last-applied-configuration:
                          {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replica...
Selector:               app=nginx
Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:1.7.9
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-deployment-54f57cf6bf (2/2 replicas created)
Events:          <none>

Теперь я не могу пропинговать 192.168.39.17/16/18/19 от master, также не могу получить доступ к curl 172.31.39.226:31165/31854 измастер также. Любая помощь будет высоко оценена ..

1 Ответ

2 голосов
/ 14 октября 2019

Из предоставленной вами информации. И из обсуждения у нас был рабочий узел с запущенным модулем Nginx. И вы подключили к нему службу NodePort и службу балансировки нагрузки.

Единственное, чего здесь не хватает, - это сервера, с которого вы пытаетесь получить к нему доступ.

Итак, я попытался добраться до этого URL 52.201.242.84:31165. Я думаю, что все, что вам нужно сделать, это белый список этого порта для публичного доступа или IP. Это можно сделать с помощью группы безопасности для рабочего узла EC2.

Теперь приведенный выше URL-адрес составлен из общедоступного IP-адреса рабочего узла плюс (+) NodePort svc, который подключен. Таким образом, вот простая формула, которую вы можете использовать, чтобы получить точный адрес запущенного модуля.

Pod Access URL = Public IP of Worker Node + The NodePort 
...