1.) Ejecute el siguiente comando para generar un número aleatorio que se utiliza en los pasos posteriores
NUMBER=$[ ( $RANDOM % 1000 ) + 1 ] echo $NUMBERNota : Reemplace la oración de su número aleatorio con el número que ha generado donde haya encontrado la oración.
Su tarea es iniciar un Kubernetes Engine administrado por Kubernetes Cluster con el nombre mycluster, su número aleatorio, y configurarlo para ejecutar 2 nodos.
2.) Ejecutar e implementar un contenedor Aquí, debe iniciar una sola instancia del contenedor Nginx (con la versión 1.10.0) desde el shell de la nube.
Ejecute el siguiente comando para ver el pod que se está ejecutando en el contenedor nginx.**
3.) Primero, debe exponer el contenedor Nginx a Internet.
Kubernetes creará un servicio con un balanceador de carga externo con una dirección IP pública. Puede ver su servicio ejecutando el siguiente comando.
kubectl get servicesAhora, obtendrá la dirección IP externa del clúster de Nginx. Abra la nueva pestaña del navegador web y pegue la dirección IP externa del clúster. Debería obtener la página de inicio predeterminada del navegador Nginx.
He usado el siguiente código hasta ahora, pero lb no funciona:
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 exposedLa razón por la que no funciona es que el puerto no está expuesto por el Pod. Ejecute el siguiente comando en lugar del segundo comando.
kubectl run mycluster --image=gcr.io/cloud-marketplace/google/nginx1 --port=80
Este comando debería crear la implementación y exponer el containerPort en 80 también, que su servicio podría alcanzar.
¡Bienvenido a Stack Overflow!
Los comandos que ha publicado no funcionan porque tiene un error tipográfico y los puertos de los contenedores no coinciden.
Explicación del problema:
Aquí está creando una nueva implementación llamada mycluster pero no está exponiendo ningún puerto. kubectl create deployment mycluster --image=gcr.io/cloud-marketplace/google/nginx1
Aquí está exponiendo una implementación denominada mycluster-727 en el puerto 80 y en el puerto de destino 8080 :
kubectl expose deployment mycluster-727 --type LoadBalancer --port 80 --target-port 8080
Aquí está configurando la imagen en diferentes nginx de implementación y con una versión diferente que se solicitó 1.10.0 : kubectl set image deployment nginx nginx=nginx:1.9.1
arreglando el problema
Lo he comprobado, y las imágenes gcr.io/cloud-marketplace/google/nginx1 y nginx:1.10.0 y ambas usan el puerto 80 para exponer la aplicación, así que en lugar de usar --targer-port=8080 necesitas usar port 80 , pero también debe exponer el contenedor por al crear la implementación.
Según la respuesta de @nischay goayl , el siguiente comando creará una implementación y la expondrá en el puerto 80: kubectl run mycluster --image=nginx:1.10.0 --port=80
Luego, cree un servicio que exponga la aplicación: kubectl expose deployment mycluster --type LoadBalancer --port 80 --target-port 80
Espere a EXTERANL-IP e intente llegar a su aplicación.
Si desea realizar una prueba interna , use un módulo de prueba con una imagen curl para llegar al servicio:
apiVersion: v1 kind: Pod metadata: name: curl namespace: default spec: containers: - name: curl image: curlimages/curl command: - sleep - "3600" imagePullPolicy: IfNotPresent restartPolicy: AlwaysY luego usa el comando:
kubectl exec -it curl -- curl -IL http://mycluster
respuesta:
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