Не могу получить доступ к сервисам на главном узле через публичный IP (но я могу SSH?) - PullRequest
0 голосов
/ 24 мая 2019

Я играл с kubernetes и столкнулся с проблемой.Суть моей проблемы заключается в том, что, хотя я могу получить доступ к службам на главном узле, свернув локальный хост, попытка доступа к нему через общедоступный IP-адрес и порт, которые делают то же самое на другом компьютере (или в веб-браузере), зависает навсегда.

Я настроил кластер, используя скрипт terraform (запускается от имени root):

#!/bin/bash -v

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>startup_log.out 2>&1

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

cat << EOF | tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

apt-get update
apt-get install -y docker-ce
apt-mark hold docker-ce
apt-get install -y kubelet kubeadm kubectl kubernetes-cni
apt-mark hold kubelet kubeadm kubectl

kubeadm init --token=${k8stoken} --pod-network-cidr=10.244.0.0/16

mkdir -p /home/ubuntu/.kube
cp -i /etc/kubernetes/admin.conf /home/ubuntu/.kube/config
chown -R $(id -u ubuntu):$(id -g ubuntu) /home/ubuntu/.kube/

usermod -aG docker ubuntu

echo "net.bridge.bridge-nf-call-iptables=1" | tee -a /etc/sysctl.conf
sysctl -p

runuser -l ubuntu -c '\
   kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
'

После чего я SSH к главному узлу (работает нормально) и запускаю:

$ git clone https://github.com/linuxacademy/robot-shop.git
$ kubectl create namespace robot-shop
$ kubectl -n robot-shop create -f ~/robot-shop/K8s/descriptors/
$ ubuntu@ip-10-0-100-167:~$ kubectl -n robot-shop get svc
NAME        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)              AGE
cart        ClusterIP   10.105.152.135   <none>        8080/TCP             15s
catalogue   ClusterIP   10.97.111.197    <none>        8080/TCP             15s
dispatch    ClusterIP   None             <none>        55555/TCP            15s
mongodb     ClusterIP   10.107.178.183   <none>        27017/TCP            15s
mysql       ClusterIP   10.110.254.52    <none>        3306/TCP             15s
payment     ClusterIP   10.99.195.138    <none>        8080/TCP             15s
rabbitmq    ClusterIP   10.99.70.232     <none>        5672/TCP,15672/TCP   15s
ratings     ClusterIP   10.98.80.21      <none>        80/TCP               15s
redis       ClusterIP   10.101.232.84    <none>        6379/TCP             15s
shipping    ClusterIP   10.106.246.97    <none>        8080/TCP             15s
user        ClusterIP   10.109.120.146   <none>        8080/TCP             15s
web         NodePort    10.97.162.113    <none>        8080:30080/TCP       15s

Службы запускаются нормально, но я не могу получить доступ к этому узлу извне.Я попробовал следовать этому руководству по отладке и обнаружил несоответствие, которое при вводе:

$ iptables-save | grep 

я ничего не получаю.Но документ не дает рекомендации относительно исправления.Кто-нибудь видел эту проблему раньше?Я обеспокоен тем, что мой конфигурационный файл имеет проблемы с ним, но я не могу понять, что!

1 Ответ

0 голосов
/ 29 мая 2019

Как упомянуто в комментарии @Ashworth, проблема была решена после включения соответствующего сервисного порта в определенной группе безопасности для соответствующего экземпляра главного узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...