暴露hello-minikube服务找不到端口
Exposing the hello-minikube service fails to find a port
我可以创建容器:
$ 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 上的主机 minikube 上。
您的 pod 正在重新出现,因为部署会为容器创建一个副本集,如果当前 pod 终止,该容器会创建一个新的副本集。
运行检查是否部署了副本集。
kubectl get rs
最好删除整个部署
kubectl delete deployment <name>
您收到此错误是因为您没有从命令 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
是端口号,然后 运行 再次公开。
请参阅下面的步骤,了解我如何能够复制您的错误然后修复
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 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 上的主机 minikube 上。
您的 pod 正在重新出现,因为部署会为容器创建一个副本集,如果当前 pod 终止,该容器会创建一个新的副本集。
运行检查是否部署了副本集。
kubectl get rs
最好删除整个部署
kubectl delete deployment <name>
您收到此错误是因为您没有从命令 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
是端口号,然后 运行 再次公开。
请参阅下面的步骤,了解我如何能够复制您的错误然后修复
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