K8s資源檔案 Pod

2021-10-20 07:52:44 字數 3704 閱讀 4602

init container定義的容器 會按照資源檔案順序優先啟動,知道它們啟動並且退出了,使用者容器才會啟動

apiversion: v1

kind: pod

...spec:

nodeselector: #這個pod只能執行在disktype: ssd標籤的節點上

disktype: ssd

apiversion: v1

kind: pod

...spec:

hostaliases: #pod重建後kubelet會自動覆蓋被修改的內容 所以修改資源檔案來代替直接修改/etc/hosts

- ip: "10.1.2.3"

hostnames:

- "foo.remote"

- "bar.remote"

...

apiversion: v1

kind: pod

metadata:

name: nginx

spec:

shareprocessnamespace: true

#開啟之後 下面兩個容器共享pid namespace

containers:

- name: nginx

image: nginx

- name: shell

image: busybox

stdin: true

#-i 互動

tty: true

#-t 終端

====

====

====

====

====

====

====

====

====

====

====

====

====

=kubectl attach -it nginx -c shell #進入nginx pod中的shell容器的tty上

#進入之後 即可ps檢視所有正在執行的程序

ps ax

pid user time command

1 root 0:00 /pause #infra容器 一直是暫停狀態 所以取名pause

8 root 0:00 nginx: master process nginx -g daemon off;

#nginx容器程序

14 101 0:00 nginx: worker process

15 root 0:00 sh

21 root 0:00 ps ax #ps ax本身

#需要開啟 apiserver的sharepid功能 1.11後預設開啟

imagepullpolicy: always   #always 每次建立pod都重新拉取一次映象

#never pod永遠不會主動拉取這個映象

#預設值ifnotpresent 只在宿主機上不存在這個映象時才拉取

apiversion: v1

kind: pod

metadata:

name: lifecycle-demo

spec:

containers:

- name: lifecycle-demo-container

image: nginx

lifecycle: #定義鉤子

poststart: #容器啟動後 執行時entrypoint可能沒有結束

exec: #執行操作 如果失敗 pod的events中會報錯 導致整個pod報錯

command: [

"/bin/sh", "-c", "echo hello from the poststart handler > /usr/share/message"

]

prestop: #容器殺死前 會阻塞殺死

exec: #執行操作

command: [

"/usr/sbin/nginx","-s","quit"

]

pod除metadata(元資料)和spec(資源詳細定義)之外第三個重要的字段 status

pod.status.phase pod的當前狀態

kubectl get pod -o wide

running

succeeded

failed

unknown

pod物件的status欄位,還可以再細分出一組conditions : podscheduled 、ready、lnitialized、unschedulable 描述造成當前statu的具體原因

ready可能情況

configmap 配置資訊獲取

downwardapi

serviceaccounttoken

在pod中定義乙個健康檢查「探針」(probe)

kubelet會根據probe的返回值來決定這個容器的狀態 而並非直接以容器映象是否執行(docker返回的資訊)作為依據

有三種型別的處理程式

探針探測狀態

apiversion: v1

kind: pod

metadata:

labels:

test: liveness

name: test-liveness-exec

spec:

containers:

- name: liveness

image: busybox

args: #啟動之後就執行

- /bin/sh

- -c

- touch /tmp/healthy;

sleep 30;

rm -rf /tmp/healthy;

sleep 600

livenessprobe: #探針

exec: #型別是exec

command:

- cat

- /tmp/healthy

initialdelayseconds: 5 #在容器啟動後5秒執行

periodseconds: 5 #每5s執行一次

#啟動之後就在/tmp目錄下建立乙個healthy檔案,表示自己已經正常執行的標誌。30s之後,它會把這個檔案刪除掉 容器啟動5s之後以5s的間隔cat /tmp/healthy 命令 返回健康狀態

spec.container.readinessprobe

spec.container.startupprobe

k8s集群建立pod,執行pod

k8s集群搭建好後,各個node的狀態變成了ready,就可以建立pod,建立完成後,就會預設的執行其中的container。使用乙個簡單yaml檔案描述pod apiversion v1 必選,版本號,例如v1,版本號必須可以用 kubectl api versions 查詢到 kind pod ...

k8s資源限制

注 以下只是在yaml檔案中進行資源限制的乙個片段,並不是完整的yaml檔案,僅是自己的乙個隨筆。root master limit vim cgroup pod.yaml spec containers name image ports protocol tcp containerport 80 ...

k8s資源清單

自主式的pod無法自癒 編輯檔案vim pod.yaml apiversion v1 指定api的版本 kind pod 檔案自定義的資源型別和角色,控制器型別 metadata 元資料物件 name demo 命名空間 labels 標籤 spec 固定物件容器的控制 containers nam...