我正在使用 nginx 映像創建 pod,如下所示 -
$ kubectl run nginx --image=nginx --port=80 -- /bin/sh -c 'sleep 20000'
$ kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=1
這些結果兩個豆莢如下 -
$ kubectl get pods
nginx 1/1 Running 0 24s
nginx-deploy-7496796997-wkhv8 1/1 Running 0 19s
curl 在“nginx-deploy” pod 中連接到 localhost,而在其他 pod 中則沒有。
$ kubectl exec -it nginx -- /bin/sh -c 'curl localhost'
curl: (7) Failed to connect to localhost port 80: Connection refused
$ k exec -it nginx-deploy-7496796997-wkhv8 -- /bin/sh -c 'curl localhost'
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
....
nginx 映像在這兩個 pod 中表現不同的任何原因?
uj5u.com熱心網友回復:
# Here command = /bin/sh -c 'sleep 20000'
kubectl run nginx --image=nginx --port=80 -- command
當您使用命令創建 pod 時,它將覆寫 Dockerfile 中的命令。這樣 nginx 服務器就不會在 pod 中啟動。請參考 nginx 的 Dockerfile。
- Kubernetes 中沒有定義 COMMAND 和 ARGS,使用 Dockerfile 的 config。
- 已經在 Kubernetes 中定義了 COMMAND(ARGS 定義與否都無效),使用 Kubernetes COMMAND。
- 在 Kubernetes 中沒有定義 COMMAND 而是 ARGS,在 Dockerfile 中使用 ENTRYPOINT,在 Kubernetes 中使用 ARGS。

綜上所述,Kubernetes 具有更高的優先級。
uj5u.com熱心網友回復:
/bin/sh -c 'sleep 20000'
您的命令已覆寫 nginx 映像中定義的默認 CMD/ENTRYPOINT。結果,nginx 服務器將無法啟動。如果你kubectl run再次沒有你的命令,nginx 將像部署一樣運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483216.html
標籤:nginx Kubernetes
上一篇:如何訪問KubernetesService的特定端點
下一篇:訪問依賴項的helm背景關系
