寫資源清單的時候使用命令查詢幫助,
kubectl explain pod
需要查詢pod中的特定內容時中間用.連線例如我們檢視pod中的spec都有什麼,就可以用
kubectl explain pod.spec
寫到哪,查到哪,但是要注意,寫的時候檢視到後面有-required-
這個引數的時候那就代表,這一單元中這個引數是必須的,例如
kubectl explain pod.spec
containers <
object> -required-
list of containers belonging to the pod. containers cannot currently be
added or removed. there must be at least one container in a pod. cannot be
updated.
這就說明containers
這個模組是必須要存在的。
乙個模組中有很多東西
例如寫乙個pod.ymal 檔案
apiversion: v1##版本
kind: pod##控制器型別
metadata:##元資料
name: demo##元資料名稱
labels:##標籤
spec:##控制容器
containers:
- name: demo ##容器名稱
- image: nginx ##指定映象
檔案編寫完成後建立pod,
[kubeadm@server1 ~]$ kubectl create -f pod.yaml
pod/demo created
[kubeadm@server1 ~]$ kubectl get pod
name ready status restarts age
demo 1/1 running 0 41s
這樣就已經執行起來了,剛剛我們寫的檔案控制器型別為自主型的pod,kind: pod因為沒有控制器,所以可以直接將pod進行刪除,他並不會再次建立。
[kubeadm@server1 ~]$ kubectl delete pod demo
pod "demo" deleted
[kubeadm@server1 ~]$ kubectl get pod
no resources found in default namespace.
其實乙個containers中可以執行多個容器,但是如果給的內容相同那麼就會產生乙個問題,那就是資源爭搶。所以盡量不要這麼幹。
可以使用不同的映象,兩個映象中的不管是埠還是網路不重和的映象來操作。
比如
apiversion: v1
kind: pod
metadata:
name: demo
labels:
spec:
containers:
- name: vm1
image: nginx
- name: vm2
image: redis
映象乙個使用nginx乙個使用redis,設定完成後進行建立
[kubeadm@server1 ~]$ kubectl create -f pod.yaml
pod/demo created
[kubeadm@server1 ~]$ kubectl get pod
name ready status restarts age
demo 2/2 running 0 48s
這樣建立出來的就沒有資源的爭搶,可以順利執行。
不想要這個pod還可以直接使用命令,直接刪除檔案中配置的容器。
[kubeadm@server1 ~]$ kubectl delete -f pod.yaml
pod "demo" deleted
但是在建立之後有乙個問題如下:
[kubeadm@server1 ~]$ kubectl get pod -o wide
name ready status restarts age ip node nominated node readiness gates
demo 2/2 running 0 39s 10.244.3.6 server4
[kubeadm@server1 ~]$ kubectl get pod --show-labels
name ready status restarts age labels
還有一種過濾的方法,這種方法適用於標籤數量比較少的時候。
name ready status restarts age
demo 2/2 running 0 6m27s
demo 2/2 running 0 6m32s demo
可以看到最後顯示的就是乙個標籤。上面我們也提到了乙個東西,在標籤不多的時候可以使用過濾,但是仔細想想,標籤的多或者少可以指定麼?當然可以。我們給pod再加乙個版本資訊的標籤,可以使用
[kubeadm@server1 ~]$ kubectl label pod demo version=v1
pod/demo labeled
[kubeadm@server1 ~]$ kubectl get pod --show-labels
name ready status restarts age labels
這樣標籤又新增上去乙個。當標籤打錯了我們也是可以進行修改的。
pod/demo labeled
[kubeadm@server1 ~]$ kubectl get pod --show-labels
name ready status restarts age labels
那標籤的作用,或者說如何使用來控制資源分配。
首先給節點也打上標籤,接著給配置檔案裡面新增標籤的標識,再執行讀取檔案並執行就會跑到我們設定的結點上執行了。
[kubeadm@server1 ~]$ kubectl label nodes server3 disktype=ssd
node/server3 labeled
[kubeadm@server1 ~]$ kubectl get nodes -l disktype
name status roles age version disktype
server1 ready master 2d1h v1.17.3
server3 ready 2d1h v1.17.3 ssd
server4 ready 2d1h v1.17.3
[kubeadm@server1 ~]$ vim pod.yaml
kind: pod
metadata:
name: demo
labels:
spec:
containers:
- name: vm1
image: nginx
- name: vm2
image: redis
nodeselector:
disktype: ssd
[kubeadm@server1 ~]$ kubectl create -f pod.yaml
[kubeadm@server1 ~]$ kubectl get pod -o wide
name ready status restarts age ip node nominated node readiness gates
demo 2/2 running 0 47s 10.244.2.5 server3
總的來說
標籤新增:
kubectl label nodes kube-node/pod label_name=label_value
標籤刪除:
##刪除乙個label,只需在命令列最後指定label的key名並與乙個減號相連即可:
kubectl label nodes/pods pod/node-name label_name-
查詢:kubectl get pod --show-labels
替換:##在新增的基礎上加上乙個--overwrite的引數
k8s資源清單
自主式的pod無法自癒 編輯檔案vim pod.yaml apiversion v1 指定api的版本 kind pod 檔案自定義的資源型別和角色,控制器型別 metadata 元資料物件 name demo 命名空間 labels 標籤 spec 固定物件容器的控制 containers nam...
k8s資源清單定義入門
1.資源分類 a.workload型資源 service pod deployment replicaset statefulset job cronjob b.服務發現及服務均衡資源型資源 service ingress c.配置與儲存型資源 volume configmap secret dow...
K8S 資源配置清單補充1
k8s環境變數中敏感資訊會帶來的安全隱患 方法1 資源配置清單建立 configmap,通常用來管理應用的配置檔案或者環境變數,myblog two pod configmap.yaml apiversion v1 kind configmap metadata name myblog namesp...