docker筆記22-k8s資源清單定義入門
資源分類:
1)workload型資源:service,pod,Redeployment(控制器,我們很少直接操作pod,而是透過控制器來操作Pod)、ReplicaSet、StatefilSet、Job、Cronjob
2)服務發現及服務均衡資源型資源:Service、Ingress
3)配置與儲存型資源:Volume、CSI(容器儲存介面,可以擴充套件各種第三方的儲存卷)、ConfigMap、Secret、DownwardAPI
4)叢集級資源:Namespace、Node、Role、rolebinding、clusterrolebinding
5)後設資料型資源:HPA、podtemplate、limitrange(限制資源的如cpu、記憶體等)
檢視pod的yaml格式清單
[root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE client 1/1 Running 0 17h myapp-fcc5f7f7c-4x2p7 0/1 ImagePullBackOff 0 12h myapp-fcc5f7f7c-dnkdq 0/1 ImagePullBackOff 0 12h mytomcat-5f8c6fdcb-7t5s2 1/1 Running 0 11h mytomcat-5f8c6fdcb-lhcsc 1/1 Running 0 12h mytomcat-5f8c6fdcb-rntrg 1/1 Running 0 12h nginx-deploy-5b595999-fpm8x 1/1 Running 0 12h
[root@master ~]# kubectl get pods mytomcat-5f8c6fdcb-lhcsc NAME READY STATUS RESTARTS AGE mytomcat-5f8c6fdcb-lhcsc 1/1 Running 0 12h
[root@master ~]# kubectl get pods mytomcat-5f8c6fdcb-lhcsc -o yaml spec: #規格、特性,使用者期望的狀態 containers: tolerations: #容忍度 status:#顯示當前資源的當前狀態 conditions:
建立資源的方法
apiserver僅接收JSON格式的資源定義。我們可以使用yaml格式提供配置清單,因為ymal格式是以縮排的方式來寫的,更利用人們的理解。我們寫完ymal格式的配置清單後,apiserver可以自動將其轉為json,然後再提交。
另外,我們使用命令kubectl run,其最終也是自動轉為json格式的資源定義了。
大部分的的資源的配置清單包含:
1)apiVersion:表示屬於哪個api群組和版本,可以透過命令 kubectl api-versions來看,顯示方式為group/version
2)Kind:資源類別,有pod、deloyment類別等
3)metadata:後設資料,包括:
a) name:在同一資源下name是必須唯一的;
b) namespace
c) labels
d) annotations:資源註解
e)uid
f) resourceversion:
g) OwnerReferences
h) selfLink:每個資源引用的PATH,格式為/api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME
4) spec,定義使用者期望的目標狀態(disired state)
5)status:表示當前狀態,讓當前狀態向期望的目標狀態靠近,本欄位有k8s叢集維護。
檢視資源清單的幫助
由於spec的欄位很多,我們背不下來了,所以可以如下檢視幫助。
[root@master ~]# kubectl explain pods
看medadata下有哪些欄位可以用:
[root@master ~]# kubectl explain pods.metadata
看spec下有哪些欄位可以用:
[root@master ~]# kubectl explain pods.spec
看spec.containers下有哪些欄位可以用:
[root@master ~]# kubectl explain pods.spec.containers
例子-用ymal建立pod
用yaml格式建立一個pod
[root@master ~]# mkdir manifests [root@master ~]# cd manifests/
[root@master manifests]# cat pod-demo.yaml apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default labels: app: myapp #kv格式的,也可以用花括號表示 tier: frontend #定義所屬的層次 spec: containers: - name: myapp #前面的-號表示這是一個列表格式的,也可以用中括號表示 image: tomcat - name: busybox image: busybox:latest command: - "/bin/sh" - "-c" - "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5" #以上命令也可以寫作:command: ["/bin/sh","-c","sleep 3600"]
[root@master manifests]# kubectl create -f pod-demo.yaml pod/pod-demo created
[root@master manifests]# kubectl get pods NAME READY STATUS RESTARTS AGE pod-demo 2/2 Running 1 33s
[root@master manifests]#kubectl describe pods pod-demo 可以看到一個pod裡面跑了兩個容器,一個是busybox,一個是tomcat
檢視pod裡面容器的日誌
[root@master manifests]# kubectl logs pod-demo myapp
說明:pod-demo是上面我們建立的pod名字,myapp是pod裡面容器的名字。
進入執行中的容器
[root@master manifests]# kubectl exec -it pod-demo -c myapp -- /bin/bash root@pod-demo:/usr/local/tomcat#
-c:自動容器名字;pod-demo是我們自己建立的容器名字。
刪除配置清單定義的資源
[root@master manifests]# kubectl delete -f pod-demo.yaml pod "pod-demo" deleted
用命令run pod和用資源清單建立的pod區別
我們用命令run一個pod是需要建立一個控制器deployment的,所以刪除這樣的pod後,控制器deployment會自動新建一個,怎麼也刪不掉。
而我們用配置清單建立的pod,沒有控制器deployment,是一個裸pod,所以一刪除就沒了,這個挺好。
命令建立的:
[root@master ~]# kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP
資源清單建立的:
[root@master manifests]# kubectl create -f pod-demo.yaml pod/pod-demo created
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2213934/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 04 . kubernetes資源清單YAML入門YAML
- 【docker】Docker入門到實踐 筆記Docker筆記
- Docker入門學習筆記Docker筆記
- 《資料科學入門(第2版)》資源連結清單資料科學
- Docker技術筆記:Docker入門淺嘗Docker筆記
- docker筆記36-helm入門Docker筆記
- Docker快速入門總結筆記Docker筆記
- CI 框架簡單入門筆記框架筆記
- Docker筆記1——入門(初識+搭建+使用)Docker筆記
- docker筆記35-資源指標API及自定義指標APIDocker筆記指標API
- docker簡單筆記Docker筆記
- docker筆記34-容器資源需求、資源限制及HeapSterDocker筆記
- SpringMVC學習筆記之---簡單入門SpringMVC筆記
- docker筆記21-k8s的使用入門Docker筆記K8S
- docker筆記25-k8s-service資源Docker筆記K8S
- docker筆記26-ingress資源和ingress controllerDocker筆記Controller
- vue入門筆記Vue筆記
- Python入門筆記Python筆記
- linux入門筆記Linux筆記
- selenium 入門筆記筆記
- Redis入門筆記Redis筆記
- ByteBuddy入門筆記筆記
- Python 入門筆記Python筆記
- Go入門筆記Go筆記
- NSIS入門筆記筆記
- DFS入門筆記筆記
- ClickHouse入門筆記筆記
- BFS入門筆記筆記
- k8s資源清單K8S
- 【廖雪峰python入門筆記】字串_轉義字元的使用Python筆記字串字元
- 【廖雪峰python入門筆記】tuple_建立單元素Python筆記
- Docker Compose 備忘清單Docker
- Hibernate快速入門筆記筆記
- Android入門筆記12Android筆記
- python入門筆記1Python筆記
- XStream入門使用筆記筆記
- 《深入剖析Kubernetes》資源連結清單
- 《WebAssembly實戰》資源連結清單Web