Разоблачение Nginx контейнера и просмотр сервиса - PullRequest
3 голосов
/ 28 марта 2020

1.) Выполните следующую команду, чтобы сгенерировать случайное число, которое будет использоваться на последующих этапах

NUMBER=$[ ( $RANDOM % 1000 ) + 1 ]

echo $NUMBER

Примечание : замените предложение своим случайным числом на число, которое вы генерировали, где бы вы ни находили предложение.

Ваша задача - запустить движок Kubernetes, управляемый кластером Kubernetes, с именем mycluster-your random number и настроить его для запуска 2 узлов.

2 .) Запуск и развертывание контейнера Здесь вам нужно запустить один экземпляр контейнера Nginx (с версией 1.10.0) из облачной оболочки.

Выполните следующую команду, чтобы просмотреть модуль, который работает в контейнере nginx. **

3.) Сначала вам нужно предоставить контейнеру Nginx inte rnet.

Kubernetes создаст службу с внешний балансировщик нагрузки с публичным c IP-адресом. Вы можете просмотреть свой сервис, выполнив следующую команду:

kubectl get services

Теперь вы получите внешний IP-адрес кластера Nginx. Откройте новую вкладку веб-браузера и вставьте внешний IP-адрес кластера. Вы должны получить домашнюю страницу по умолчанию для браузера Nginx.

Я использовал приведенный ниже код, но lb не работает:

gcloud container clusters create mycluster-5 --zone=us-central1-a
kubectl create deployment mycluster --image=gcr.io/cloud-marketplace/google/nginx1
kubectl set image deployment nginx nginx=nginx:1.9.1
kubectl expose deployment mycluster-727 --type LoadBalancer --port 80 --target-port 8080
service/mycluster-727 exposed

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Причина, по которой он не работает, потому что порт не открывается модулем Pod. Пожалуйста, запустите приведенную ниже команду вместо второй команды.

kubectl run mycluster --image=gcr.io/cloud-marketplace/google/nginx1 --port=80

Эта команда должна создать развертывание и отобразить containerPort на 80, который ваша служба сможет выполнить .

0 голосов
/ 30 марта 2020

Добро пожаловать в переполнение стека!

Команды, которые вы отправили, не работают, потому что у вас есть опечатка и порты контейнеров не совпадают.

Объяснение проблемы:

Здесь вы создаете новое развертывание с именем mycluster, но не открываете ни один порт. kubectl create deployment mycluster --image=gcr.io/cloud-marketplace/google/nginx1

Здесь вы раскрываете развертывание с именем mycluster-727 на порту 80 и целевому порту 8080:

kubectl expose deployment mycluster-727 --type LoadBalancer --port 80 --target-port 8080

Здесь вы находитесь установка образа для развертывания дифференциалов nginx и с другой версией, которая была запрошена 1.10.0: kubectl set image deployment nginx nginx=nginx:1.9.1

Устранение проблемы

Я проверил, и образы gcr.io/cloud-marketplace/google/nginx1 и nginx:1.10.0 и оба они используют порт 80 для представления приложения, поэтому вместо использования --targer-port=8080 вам нужно использовать порт 80, , но вам также необходимо выставить контейнер por при создании развертывания.

На основе ответа @nischay goayl следующая команда создаст развертывание и откроет порт 80: kubectl run mycluster --image=nginx:1.10.0 --port=80

Затем создайте службу, предоставляющую приложение: kubectl expose deployment mycluster --type LoadBalancer --port 80 --target-port 80

Дождитесь EXTERANL-IP и попробуйте обратиться к вашему приложению.

Если вы хотите провести внутреннее тестирование , используйте тестовый модуль с изображением curl для доступа к услуге:

apiVersion: v1
kind: Pod
metadata:
  name: curl
  namespace: default
spec:
  containers:
  - name: curl
    image: curlimages/curl
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

И затем используйте команду:

kubectl exec -it curl -- curl -IL http://mycluster

Ответ:

HTTP/1.1 200 OK
Server: nginx/1.10.0
Date: Mon, 30 Mar 2020 09:30:07 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 Apr 2016 15:17:57 GMT
Connection: keep-alive
ETag: "571f86a5-264"
Accept-Ranges: bytes
...