虛擬機(jī)級(jí)別的相關(guān)屬性都是pod級(jí)別的:描述機(jī)器整體捎迫。
pod幾個(gè)重要字段的含義和用法:
#NodeSelector:是一個(gè)供用戶將pod與Node進(jìn)行綁定的字段
apiVersion: v1
kind: Pod
...
spec:
nodeSelector:
disktype: ssd
#這樣的配置意味pod永遠(yuǎn)自能運(yùn)行在攜帶ssd標(biāo)簽的節(jié)點(diǎn)上。
NodeName:一旦Pod的這個(gè)字段被賦值唧垦,k8s會(huì)以為Pod已經(jīng)經(jīng)過(guò)調(diào)度了用于測(cè)試。
HostAliases:定義Pod的host文件。/etc/hosts里面的內(nèi)容漆撞。
apiVersion: v1
kind: Pod
...
spec:
hostAliases:
- ip: "10.1.2.3"
hostnames:
- "foo.remote"
- "bar.remote"
...
#最后的效果
cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1 localhost
...
10.244.135.10 hostaliases-pod
10.1.2.3 foo.remote
10.1.2.3 bar.remote
例子: shareProcessNamespace: true
# 在這個(gè)文件中,定義了兩個(gè)容器:一個(gè)是nginx,一個(gè)開(kāi)啟了tty和stdin的的容器叫挟。其實(shí)等同于docker run中的 -it(-i:stdin -t:tty)
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
shareProcessNamespace: true
containers:
- name: nginx
image: nginx
- name: shell
image: busybox
stdin: true
tty: true
#創(chuàng)建
$ kubectl create -f nginx.yaml
#鏈接shell容器的tty
$ kubectl attach -it nginx -c shell
#查看進(jìn)程艰匙。也就是在喲個(gè)pod上可以看到里面所有容器的進(jìn)程。因?yàn)樗麄兡毓蚕硪粋€(gè)PID Namespace抹恳。
$ kubectl attach -it nginx -c shell
/ # ps ax
PID USER TIME COMMAND
1 root 0:00 /pause
8 root 0:00 nginx: master process nginx -g daemon off;
14 101 0:00 nginx: worker process
15 root 0:00 sh
21 root 0:00 ps ax
k8s項(xiàng)目對(duì)container的定義:image鏡像,Command(啟動(dòng)命令)员凝,workingDir(容器的工作目錄),Port(容器開(kāi)發(fā)端口)奋献,volumeMounts(容器掛載的Volume)健霹。
1.ImagePullPolicy字段:Always 鏡像拉去策略。默認(rèn)是每創(chuàng)建就拉去一次瓶蚂。
2.Lifecycle字段:容器狀態(tài)發(fā)生變化時(shí)觸發(fā)一系列”鉤子“
apiVersion: v1
kind: Pod
metadata:
name: lifecycle-demo
spec:
containers:
- name: lifecycle-demo-container
image: nginx
lifecycle:
#容器啟動(dòng)后立即執(zhí)行
postStart:
exec:
command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
#容器被殺死前
preStop:
exec:
command: ["/usr/sbin/nginx","-s","quit"]
總結(jié):關(guān)于pod的狀態(tài)以及含義