Предоставление службы hello-minikube не может найти порт

Я мог бы создать контейнер:

$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=
deployment "hello-minikube" created

И я сейчас пытаюсь выставить сервис:

$ kubectl expose deployment hello-minikube --type=NodePort
error: couldn't find port via --port flag or introspection

Даже если я удалю его, он все равно вернется к своему:

$ kubectl delete pod hello-minikube-2138963058-2szl7
pod "hello-minikube-2138963058-2szl7" deleted
[stephane@stephane-ThinkPad-X201 ~]
$ kubectl get pods
NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-2138963058-nhh1q   1/1       Running   0          3m

Это стручок:

$ kubectl get pods
NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-2138963058-2szl7   1/1       Running   0          16m

И его описание:

$ kubectl describe pod hello-minikube-2138963058-2szl7
Name:       hello-minikube-2138963058-2szl7
Namespace:  default
Node:       minikube/192.168.42.196
Start Time: Thu, 14 Sep 2017 23:20:03 +0200
Labels:     pod-template-hash=2138963058
        run=hello-minikube
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"hello-minikube-2138963058","uid":"2b37ca13-9968-11e7-a720-525400...
Status:     Running
IP:     172.17.0.3
Created By: ReplicaSet/hello-minikube-2138963058
Controlled By:  ReplicaSet/hello-minikube-2138963058
Containers:
  hello-minikube:
    Container ID:   docker://5e4ba407d8869e6e843ec3d7876e953147cc01104e980c7febfea218808ab379
    Image:      gcr.io/google_containers/echoserver:1.4
    Image ID:       docker-pullable://gcr.io/google_containers/echoserver@sha256:5d99aa1120524c801bc8c1a7077e8f5ec122ba16b6dda1a5d3826057f67b9bcb
    Port:       <none>
    State:      Running
      Started:      Thu, 14 Sep 2017 23:20:05 +0200
    Ready:      True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-t8qx7 (ro)
Conditions:
  Type      Status
  Initialized   True 
  Ready     True 
  PodScheduled  True 
Volumes:
  default-token-t8qx7:
    Type:   Secret (a volume populated by a Secret)
    SecretName: default-token-t8qx7
    Optional:   false
QoS Class:  BestEffort
Node-Selectors: <none>
Tolerations:    <none>
Events:
  FirstSeen LastSeen    Count   From            SubObjectPath           Type        Reason          Message
  --------- --------    -----   ----            -------------           --------    ------          -------
  17m       17m     1   default-scheduler                   Normal      Scheduled       Successfully assigned hello-minikube-2138963058-2szl7 to minikube
  17m       17m     1   kubelet, minikube                   Normal      SuccessfulMountVolume   MountVolume.SetUp succeeded for volume "default-token-t8qx7" 
  17m       17m     1   kubelet, minikube   spec.containers{hello-minikube} Normal      Pulled          Container image "gcr.io/google_containers/echoserver:1.4" already present on machine
  17m       17m     1   kubelet, minikube   spec.containers{hello-minikube} Normal      Created         Created container
  17m       17m     1   kubelet, minikube   spec.containers{hello-minikube} Normal      Started         Started container

Все это на мини-кубе на Linux.

2 ответа

Решение

Вы получаете эту ошибку, потому что вы не установили порт контейнера из команды kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port= как таковая команда expose не знает, какой порт контейнера сопоставить с портом узла, а затем ошибка

Вы должны установить точный порт контейнера следующим образом kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=80 при условии, 80 это номер порта, а затем снова запустите expose.

Посмотрите ниже шаг за шагом, как я смог повторить вашу ошибку, а затем исправить

C:\Users\innocent.anigbo\.minikube>kubectl run hello-kube --image=gcr.io/google_
containers/echoserver:1.4 --port=
deployment "hello-kube" created

C:\Users\innocent.anigbo\.minikube>kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
hello-kube-1448409582-c9sm5      1/1       Running   0          1m
hello-minikube-938614450-417hj   1/1       Running   1          8d
hello-nginx-3322088713-c4rp4     1/1       Running   0          6m

C:\Users\innocent.anigbo\.minikube>kubectl get deployment
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-kube       1         1         1            1           2m
hello-minikube   1         1         1            1           8d
hello-nginx      1         1         1            1           7m

C:\Users\innocent.anigbo\.minikube>kubectl get service
NAME          CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
hello-nginx   10.0.0.136   <nodes>       80:32155/TCP   4m
kubernetes    10.0.0.1     <none>        443/TCP        20d

C:\Users\innocent.anigbo\.minikube>kubectl expose deployment hello-kube --type=N
odePort
error: couldn't find port via --port flag or introspection
See 'kubectl expose -h' for help and examples.

C:\Users\innocent.anigbo\.minikube>kubectl delete deployment hello-kube
deployment "hello-kube" deleted

C:\Users\innocent.anigbo\.minikube>kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
hello-minikube-938614450-417hj   1/1       Running   1          8d
hello-nginx-3322088713-c4rp4     1/1       Running   0          11m

C:\Users\innocent.anigbo\.minikube>kubectl run hello-kube --image=gcr.io/google_
containers/echoserver:1.4 --port=80
deployment "hello-kube" created

C:\Users\innocent.anigbo\.minikube>kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
hello-kube-2715294448-0rxf2      1/1       Running   0          3s
hello-minikube-938614450-417hj   1/1       Running   1          8d
hello-nginx-3322088713-c4rp4     1/1       Running   0          11m

C:\Users\innocent.anigbo\.minikube>kubectl expose deployment hello-kube --type=N
odePort
service "hello-kube" exposed

C:\Users\innocent.anigbo\.minikube>kubectl get service
NAME          CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
hello-kube    10.0.0.137   <nodes>       80:30004/TCP   3s
hello-nginx   10.0.0.136   <nodes>       80:32155/TCP   9m
kubernetes    10.0.0.1     <none>        443/TCP        20d

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

Запустите это, чтобы проверить, развернут ли набор реплик.

kubectl get rs

В идеале вы должны удалить все развертывание

kubectl delete deployment <name>
Другие вопросы по тегам