Предоставление службы 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>