一 Kuberbetes的架構簡單介紹
1.1 雲計算的傳統分類
1.2 kubernetes基礎架構
工作機制
- 用戶通過kubectl向api-server提交需要運行的pod描述
- api-server接收請求並將相關描述存儲到etcd
- scheduler 監控api-server拿到相關描述信息,開始掃描node節點,找到滿足條件的node節點,將Pod與node的對應關系寫入etcd
- Kubelet定時請求api-server,拿到需要在本機運行的Pod信息,運行起來
- 用戶提交RC描述,rc控制器監視集群中的容器並保持數量
- 用戶提交service描述,由kube-proxy負責具體的工作流量轉發
1.3 創建一個容器的步驟
- 鏡像從哪里獲取以及版本號
- 鏡像倉庫是否需要認證,如果需要,請提供認證密鑰
- 容器如果掛掉了,是否需要重啟
- 容器是否需要掛載持久存儲
- 是否為容器指定自己的dns
- 是否指定容器運行的節點
- 是否需要傳遞環境變量
- 容器啟動之后,是否需要執行某些操作
- 容器在銷毀時,是否需要執行某些操作
- 在什么情況下,我們認為容器是存活的
- 在什么情況下,我們認為容器是可以提供服務的
- 在容器啟動之前,是否還需要做一些准備工作
在前面已經安裝完成一個kubernetes的集群
[root@docker-server1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION 192.168.132.131 Ready master 105m v1.17.0 192.168.132.132 Ready <none> 92m v1.17.0 192.168.132.133 Ready <none> 90m v1.17.0
[root@docker-server1 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE coredns-6955765f44-8kxdg 1/1 Running 0 108m coredns-6955765f44-m66bw 1/1 Running 0 108m etcd-192.168.132.131 1/1 Running 0 108m kube-apiserver-192.168.132.131 1/1 Running 0 108m kube-controller-manager-192.168.132.131 1/1 Running 0 108m kube-flannel-ds-amd64-dbckr 1/1 Running 0 95m kube-flannel-ds-amd64-fg972 1/1 Running 0 93m kube-flannel-ds-amd64-m9lgq 1/1 Running 0 104m kube-proxy-7xgt9 1/1 Running 0 95m kube-proxy-k8kb7 1/1 Running 0 93m kube-proxy-q867d 1/1 Running 0 108m kube-scheduler-192.168.132.131 1/1 Running 0 108m
kubectl 主要管理集群中的資源對象,容器也是資源
1.4 常用資源介紹
Node
Namespace
Container
Pod
Label
Annotations
ReplicaController
ReplicaSet
Deployment
HPA
Service
Job
資源對象:分為集群級別資源(node,pv,clusterrole)和命名空間級別資源(pods)
node:節點,node不屬於任何命名空間,是集群資源
二 namespace的簡單操作
集群安裝的時候會自動幫助我們創建幾個namesapce,查看namespace
2.1 查看
[root@docker-server1 ~]# kubectl get ns
NAME STATUS AGE default Active 137m kube-node-lease Active 137m kube-public Active 137m kube-system Active 137m kubernetes-dashboard Active 82m
kubectl get pods -n kube-system 這個操作就是查看kube-system 這個命名空間所有的容器
當我們執行kubectl get pods,不指定命名空間的話 ,就去查詢default這個默認的命名空間,但是沒任何容器運行
[root@docker-server1 ~]# kubectl get pods
No resources found in default namespace.
2.3 創建一個命名空間
[root@docker-server1 ~]# kubectl create ns projecta
也可以通過提交資源描述文件進行創建
[root@docker-server1 ~]# kubectl get ns
NAME STATUS AGE default Active 171m kube-node-lease Active 171m kube-public Active 171m kube-system Active 171m kubernetes-dashboard Active 116m projecta Active 6s
2.3 刪除namespace
[root@docker-server1 ~]# kubectl delete ns projecta
[root@docker-server1 ~]# kubectl get ns
NAME STATUS AGE default Active 173m kube-node-lease Active 173m kube-public Active 173m kube-system Active 173m kubernetes-dashboard Active 117m
命名空間的命名規范
[root@docker-server1 ~]# kubectl create ns Projecta
The Namespace "Projecta" is invalid: metadata.name: Invalid value: "Projecta": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name', or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')
從這里就可以看到規則
2.4 資源描述文件操作namespace
[root@docker-server1 ~]# mkdir -p /yamls/namespace
[root@docker-server1 ~]# cd /yamls/namespace
[root@docker-server1 namespace]# vim projectb.yaml
apiVersion: v1 #API版本
kind: Namespace #資源類型
metadata:
name: projectb #命名空間名稱
[root@docker-server1 namespace]# kubectl apply -f projectb.yaml
[root@docker-server1 namespace]# kubectl get ns
NAME STATUS AGE default Active 3h18m kube-node-lease Active 3h18m kube-public Active 3h18m kube-system Active 3h18m kubernetes-dashboard Active 142m projectb Active 19s
刪除命名空間
[root@docker-server1 namespace]# kubectl delete -f projectb.yaml
[root@docker-server1 namespace]# kubectl get ns
NAME STATUS AGE default Active 3h18m kube-node-lease Active 3h18m kube-public Active 3h18m kube-system Active 3h18m kubernetes-dashboard Active 142m
命名空間簡單介紹到這里
博主聲明:本文的內容來源主要來自譽天教育晏威老師,由本人實驗完成操作驗證,需要的博友請聯系譽天教育(http://www.yutianedu.com/),獲得官方同意或者晏老師(https://www.cnblogs.com/breezey/)本人同意即可轉載,謝謝!