創建pod資源
pod是最小資源單位.
任何的一個k8s資源都可以由yml清單文件來定義
k8s yaml的主要組成
apiVersion: v1 api版本
kind: pod 資源類型
metadata: 屬性
spec: 詳細
master節點編寫pod.yaml文檔
vi k8s_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
創建pod資源並查看pod資源
kubectl create -f k8s_pod.yml
kubectl get pod
kubectl describe pod nginx
node節點:根據鏡像的pod-infrastructure:latest image的具體地址進行填寫進行填寫
vim /etc/kubernetes/kubelet
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.0.0.11:5000/pod-infrastructure:latest"
systemctl restart kubelet.service
查看是否啓動成功
kubectl get pod -o wide
kubectl describe pod nginx
pod和容器的關係:
爲什麼創建一個pod資源,需要至少啓動兩個容器?
pod基礎容器 實現k8s的高級功能+
nginx容器 實現業務功能
pod資源中,多個業務容器的端口不能衝突
pod資源:至少由兩個容器組成,pod基礎容器和業務容器組成(最多1+4)
只要創建一個pod資源,都會啓動一個pod基礎容器+pod資源中的業務容器
curl -I 172.18.78.2 訪問pod的ip地址,pod裏面的nginx可以被訪問,nginx容器和pod-infrastructure
172.18.78.2 究竟是哪一個容器的ip地址?
172.18.78.2是pod基礎容器的ip
nginx容器和pod基礎容器共用ip地址
ReplicationController資源
rc:保證指定數量的pod始終存活,rc通過標籤選擇器來關聯pod
啓動5個相同的pod,pod 5個副本
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 5 #副本5
selector:
app: myweb
template: #模板
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: 10.0.0.11:5000/nginx:1.13
ports:
- containerPort: 80
啓動一個rc 並查看rc信息
kubectl create -f k8s_rc.yaml
kubectl get rc
刪除一個 又會創建一個新的
kubectl delete pod nginx-9kstr
每一個pod名字,必須唯一
k8s 不斷的檢查不可用的節點,驅逐pod
停止node節點的服務
systemctl stop kubelet.service
刪除節點
kubectl delete node 10.0.0.12
會在另外的節點上新建 一直保持rc始終運行
[root@k8s-master rc]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
nginx-1zgwx 1/1 Running 0 32s 172.18.10.8 10.0.0.13
nginx-kt27z 1/1 Running 0 8m 172.18.10.5 10.0.0.13
nginx-qq1sc 1/1 Running 0 32s 172.18.10.7 10.0.0.13
nginx-st72b 1/1 Running 0 8m 172.18.10.4 10.0.0.13
nginx-tvf09 1/1 Running 0 32s 172.18.10.6 10.0.0.13
test 2/2 Running 14 7h 172.18.10.2 10.0.0.13
查看標籤pod的
kubectl get pod -o wide --show-labels
查看節點使用那些標籤
kubectl get rc -o wide
在這裏插入代碼片
修改pod 標籤爲myweb 會出現少了一個,刪除了最年輕的
kubectl edit pod test
宏觀世界,pod都是同一秒創建
微觀世界,pod創建相隔幾毫米
kubectl create -f xxx.yaml 創建資源
kubectl get pod|rc 查看某一個資源列表
kubectl describe pod nginx 查看某一個具體資源的詳細信息
kubectl delete pod nginx 刪除某一個具體資源
或者kubectl delete -f xxx.yaml
kubectl edit pod nginx 編輯某一個資源的配置文件