k8s的最小管理單元 一組容器的集合 一個Pod中的容器共享網絡命令空間 Pod是短暫的
1.infrastructure container 基礎容器(維護整個Pod網絡空間)html
#查看容器的網絡 cat /opt/kubernetes/cfg/kubelet #每次建立Pod時候就會建立,與Pod對應的,對於用戶是透明的,網絡組件會被自動加載成一個組件提供出去 docker ps
2.initcontainers 初始化容器node
pod在進行建立時必定會被執行當中的初始化initcontainers, 在老版本中執行時不會區分先後順序(在系統進行加載時PID號數字越小,優先級別越高,越先被啓動), 隨着雲平臺的改進,啓動模式改成主機形式,分隔出的初始化容器會被優先加載, 在初始化容器加載完成以後後面的業務容器才能正常接着運行
3.container 業務容器,並行啓動nginx
示例:docker
Init containers in usevim
This example defines a simple Pod that has two init containers. The first waits for myservice, and the second waits for mydb. Once both init containers complete, the Pod runs the app container from its spec section.
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox:1.28 command: ['sh', '-c', 'echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox:1.28 command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: busybox:1.28 command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
IfNotPresent:默認值,鏡像在宿主機上不存在時才拉取 Always:每次建立Pod都會從新拉取一次鏡像 Never:Pod永遠不會主動拉取這個鏡像
示例:api
Verify by creating a pod that uses a private image, e.g.:
kubectl apply -f - <<EOF apiVersion: v1 kind: Pod metadata: name: private-image-test-1 spec: containers: - name: uses-private-image image: $PRIVATE_IMAGE_NAME imagePullPolicy: Always command: [ "echo", "SUCCESS" ] EOF
kubectl get pods kubectl edit deployment/nginx cd demo/ vim pod1.yaml apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: nginx image: nginx imagePullPolicy: Always command: [ "echo", "SUCCESS" ] kubectl create -f pod1.yaml kubectl get pods #此時會出現CrashLoopBackOff建立以後又關閉的狀態提示 #失敗的狀態的緣由是由於命令啓動衝突 #刪除 command: [ "echo", "SUCCESS" ] #同時更改一下版本 image: nginx:1.14 #刪除原有的資源 kubectl delete -f pod1.yaml #更新資源 kubectl apply -f pod1.yaml #查看分配節點 kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE mypod 1/1 Running 0 1m42s 172.17.56.3 192.168.142.130 <none> #在任意node節點使用curl查看頭部信息 curl -I 172.17.56.3
HTTP/1.1 200 OK Server: nginx/1.14.2 Date: Sat, 18 Feb 2020 19:32:55 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 04 Dec 2018 14:44:49 GMT Connection: keep-alive ETag: "5c0692e1-264" Accept-Ranges: bytes