Kubernetes是什麼?
Kubernetes是容器集羣管理系統,是一個開源的平臺,可以實現容器集羣的自動化部署、自動擴縮容、維護等功能。
通過Kubernetes你可以:
快速部署應用
快速擴展應用
無縫對接新的應用功能
節省資源,優化硬件資源的使用
Kubernetes 特點
可移植: 支持公有云,私有云,混合雲,多重雲(multi-cloud)
可擴展: 模塊化, 插件化, 可掛載, 可組合
自動化: 自動部署,自動重啓,自動複製,自動伸縮/擴展
Kubernetes是Google 2014年創建管理的,是Google 10多年大規模容器管理技術Borg的開源版本。
通過web端體驗kubernetes的功能和場景:
https://kubernetes.io/docs/tutorials/kubernetes-basics/
左邊部分是操作說明,右邊是命令終端
輸入:minikube start //開啓迷你kube系統
部署:
kubectl get nodes //創建一個單點kubenetes集羣
kubectl cluster-info //查看集羣信息
kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080
通過kubectl run 部署一個名爲kubernetes-bootcamp的容器 --image指定容器鏡像 --port指定對外暴露的端口
名詞解釋:
Deployment可以理解爲應用
Pod 理解爲一組容器的集合,一些息息相關的容器放在一個Pod中,同一個Pod中的容器共享IP和Port空間
也就是在同一個命名空間。
Pod 在Kubernetes是最小的調度單位,同一Pod中的容器始終被一起調度
kubectl get pods //查看當前pod
訪問應用:
kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
//將容器的8080端口映射到節點端口,隨機分配的端口
kubectl get services //查看應用被映射到哪個端口
curl host01:32253 //通過端口號訪問應用
kubectl get pods --all-namespaces //獲取所有命名空間中的所有Pod。
Scale應用:
kubectl get deployments //查看副本數,默認情況下應用只會運行一個副本。
增加三個副本:kubectl scale deployments/kubernetes-bootcamp --replicas=3
kubectl get pods //查看應用副本
通過curl訪問應用會發現三個副本輪詢處理請求: curl 127.0.0.1:30781
刪除一個副本:kubectl scale deployments/kubernetes-bootcamp --replicas=2
滾動更新:
更新image
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
將v1版本升級爲v2版本
kubectl get pods //查看應用副本,會自動替換舊版本,不停機更新,舊版本會被逐個刪除
訪問應用會發現版本已經升級了:curl 127.0.0.1:30781
回退image
kubectl rollout undo deployments/kubernetes-bootcamp
kuberctl get pods //查看應用副本,會自動替換新的版本,刪除新版本,舊版本image上線
訪問應用會發現版本已經降級了:curl 127.0.0.1:30781