【发布时间】:2020-05-04 03:52:28
【问题描述】:
【问题讨论】:
-
像
kubectl get和kubectl describe这样的命令通常应该将文本内容写入控制台,而不是图像。您能否将这些图像替换为命令的实际输出,并提供重现问题所需的源代码(例如、部署 YAML 文件)?
标签: linux docker kubernetes orchestration
【问题讨论】:
kubectl get 和kubectl describe 这样的命令通常应该将文本内容写入控制台,而不是图像。您能否将这些图像替换为命令的实际输出,并提供重现问题所需的源代码(例如、部署 YAML 文件)?
标签: linux docker kubernetes orchestration
您的容器没有长时间运行的进程。容器中的主进程以退出代码 0 退出,这通常意味着该进程已成功终止。您可以在您共享的 kubectl describe 输出中看到它。
Reason: Completed
Exit Code: 0
【讨论】:
-t 选项,它分配了一个伪tty。试试docker run <image_name> -p 3000:3000,这就是你使用 pod 运行容器时会发生的情况。
您可以添加如下命令,使 pod 保持运行状态。
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
参考:Doc
【讨论】:
一旦 Pod 被调度程序分配给一个节点,kubelet 就开始使用容器运行时创建容器。容器有三种可能的状态:Waiting、Running 和 Terminated。
已终止:表示容器已完成执行并已停止运行。
容器在成功完成执行或由于某种原因失败时进入此状态。无论如何,都会显示原因和退出代码,以及容器的开始和结束时间。
在您的屏幕截图中,可以清楚地看到 pod 内的容器正在运行并完成其工作,退出代码 0 如下所示 sn-p
State: Terminated
Reason: Completed
Exit Code: 0
您应该向容器中添加一个长时间运行的进程,或者在 pod 定义中定义 restartPolicy: Never。
通过添加正确的重启策略测试了您的映像,并且 POD 正确运行到完成,没有崩溃
kubectl run test --image=abhishekk27/kube-pub:new --restart=Never
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test 0/1 Completed 0 8m12s
yaml 生成:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: test
name: test
spec:
containers:
- image: abhishekk27/kube-pub:new
name: test
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Never
结果:
$ kubectl describe pod test
Name: test
Namespace: default
Priority: 0
Node: dlv-k8s-node-1/131.160.200.104
Start Time: Fri, 17 Jan 2020 09:45:00 +0000
Labels: run=test
Annotations: <none>
Status: Succeeded
IP: 10.244.1.12
IPs:
IP: 10.244.1.12
Containers:
test:
Container ID: docker://b335e5fef022dced824f85ba2bfe4c024608c9b5463599eb36591a14d709786d
Image: abhishekk27/kube-pub:new
Image ID: docker-pullable://abhishekk27/kube-pub@sha256:6a696bd733edaa48b9be781960f4ee178d16f1c9aea51e53bd0f54326a3d05b1
Port: <none>
Host Port: <none>
State: Terminated
Reason: Completed
Exit Code: 0
Started: Fri, 17 Jan 2020 09:45:48 +0000
Finished: Fri, 17 Jan 2020 09:45:48 +0000
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-7f4mt (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-7f4mt:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-7f4mt
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 6m50s default-scheduler Successfully assigned default/test to dlv-k8s-node-1
Normal Pulling 6m46s kubelet, dlv-k8s-node-1 Pulling image "abhishekk27/kube-pub:new"
Normal Pulled 5m58s kubelet, dlv-k8s-node-1 Successfully pulled image "abhishekk27/kube-pub:new"
Normal Created 5m58s kubelet, dlv-k8s-node-1 Created container test
Normal Started 5m58s kubelet, dlv-k8s-node-1 Started container test
【讨论】:
apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: test name: test spec: containers: - command: - /bin/bash - -c - "while true; do :; done" image: abhishekk27/kube-pub:new name: test