我可以创建容器:
$ 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
是pod:
$ 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上。
答案 0 :(得分:3)
您收到此错误是因为您没有从命令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
答案 1 :(得分:1)
您的窗格重新出现,因为部署会为容器创建一个副本集,如果当前窗格终止,则会创建一个新副本。
运行此选项以检查是否部署了副本集。
kubectl get rs
理想情况下,您应该删除整个部署
kubectl delete deployment <name>