入坑第一天,差點沒爬起來😂😂😂html
1. Kubernetes是什麼linux
Kubernetes (K8s)是一個用於自動化部署、自動擴縮容和管理容器化應用程序的開源系統。git
關於Kubernetes,說得最多的就是自動容器部署、彈性伸縮、應用管理。(Automated container deployment , scaling , and management)github
Kubernetes將組成應用程序的容器分組爲邏輯單元,以便於管理和發現。Kubernetes基於在谷歌上運行生產工做負載的15年經驗,結合了來自社區的最佳思想和實踐。是工業生產級別的容器編排系統。docker
2. Kubernetes特性json
3. 搭建Kubernetes學習環境bootstrap
初學Kubernetes,建議使用基於docker的解決方案:Kubernetes社區支持的工具,或者在本地機器上配置Kubernetes集羣的生態系統中的工具。api
若是是生產環境的話,有不少解決方案和供應商可供選擇,推薦:阿里雲app
https://kubernetes.io/docs/setup/負載均衡
3.1. Minikube
Minikube是一個工具,它使咱們可以很容易地在本地運行Kubernetes。Minikube在你的筆記本的虛擬機中運行一個單節點的Kubernetes集羣。
更多關於Minikube的用法請參見 https://minikube.sigs.k8s.io/
安裝Minikube
首先,檢查Linux上是否支持虛擬化
grep -E --color 'vmx|svm' /proc/cpuinfo
其次,確保已經安裝了kubectl
kubectl version
具體安裝步驟參見 https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux
安裝完kubectl之後,接下來請確保已經安裝了 Hypervisor 或者 VirtualBox 或者 KVM
注意,Minikube支持 --vm-driver=none選項,這樣的話就會安裝到主機上,而不是主機上虛擬處理的虛擬機上。
最後,安裝Minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
Minikube基本命令
然而,理想很豐滿,現實很骨感
當你運行 minikube start的時候,你就會發現從k8s.gcr.io拉取鏡像失敗
pingk8s.gcr.io
ping k8s.gcr.io發現所有超時
Soga,國內沒法訪問 k8s.gcr.io
因而換個思路,從國內的鏡像倉庫去下載,不要慌,阿里雲已經給出瞭解決方案
https://github.com/AliyunContainerService/minikube
https://yq.aliyun.com/articles/221687
https://yq.aliyun.com/articles/672675?spm=a2c4e.11153940.0.0.7dd54cec4rOx87
首先,若是minikube下載都下載不下來的話,能夠改爲如下地址
curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.5.0/minikube-linux-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/
如下摘自雲棲社區的一篇博客:
因而,在啓動的時候指定了一些參數:
minikube start --image-mirror-country cn \
--vm-driver=virtualbox \
--iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.5.0.iso \
--registry-mirror=https://xxxx.mirror.aliyuncs.com
有的朋友可能會疑惑,鏡像地址中的xxxx是什麼?其實,這個是阿里雲的鏡像加速器地址,每一個阿里雲帳號都有一個專屬的鏡像加速器。如圖:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
其實也能夠不指定--iso-url選項,不指定的話,默認下載最新的 minikube v1.5.2 版本
接下來用一個已經存在的鏡像來建立一個部署
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
這裏用到的命令是kubectl,基本命令以下:
部署是能夠建立成功,然而當你啓動這個服務的時候就會發現怎麼都啓不起來,正常狀況下看到Running狀態表示啓動成功
吸收前面的經驗,這裏將 k8s.gcr.io 換成 registry.cn-hangzhou.aliyuncs.com/google_containers
完整的命令是這樣的:
kubectl create deployment hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
部署服務
# 建立部署
kubectl create deployment hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
# 將部署暴露爲服務
kubectl expose deployment hello-minikube --type=NodePort --port=8080
# 查看服務
kubectl get pod
# 獲取服務URL
minikube service hello-minikube --url
# 刪除服務
kubectl delete services hello-minikube
# 刪除部署
kubectl delete deployment hello-minikube
# 中止Minikube集羣
minikube stop
# 刪除Minikube集羣
minikube delete
# 查看儀表盤
minikube dashboard
演示
3.2. 集羣管理
啓動集羣
containerd是一個行業標準的容器運行時,它強調簡單性、健壯性和可移植性。它能夠做爲Linux和Windows的守護進程,以管理其主機系統的完整容器生命週期。
# 指定Kubernetes版本
minikube start --kubernetes-version v1.16.0
# 指定VM驅動
minikube start --vm-driver=<driver_name>
# 爲了用containerd做爲容器運行時
minikube start --network-plugin=cni \
--enable-default-cni \
--container-runtime=containerd \
--bootstrapper=kubeadm
配置集羣
爲了應用Minikube的一些特性,在minikube start命令的時候能夠經過--extra-config選項來指定
格式爲: component.key=value,其中component能夠是下列之一的字符串
例如:
--extra-config=kubelet.MaxPods=5
--extra-config=scheduler.LeaderElection.LeaderElect=true
--extra-config=apiserver.authorization-mode=RBAC
集羣交互
minikube dashboard
4. 其它
Docker中國官方鏡像加速 https://registry.docker-cn.com
國內Kubernetes的容器鏡像倉庫 registry.cn-hangzhou.aliyuncs.com/google_containers
更改docker默認倉庫地址
/etc/docker/daemon.json
{ "registry-mirrors": ["https://registry.docker-cn.com"] # registry.docker-cn.com是國內的鏡像網站 }
若是是Docker Desktop的話,能夠這樣修改
5. 文檔
Kubernetes
https://kubernetes.io/docs/setup/learning-environment/minikube/
https://kubernetes.io/docs/tasks/tools/install-minikube/
https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-linux
https://github.com/containerd/containerd
https://github.com/kubernetes/kubernetes
https://www.jianshu.com/p/b10c0d7f7d18
阿里雲
https://cr.console.aliyun.com/cn-hangzhou/instances/images
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
https://help.aliyun.com/video_detail/54770.html
https://yq.aliyun.com/articles/221687
https://yq.aliyun.com/articles/672675
https://github.com/AliyunContainerService/minikube
真實案例