入坑第一天,差點沒爬起來??????
1. Kubernetes是什么
Kubernetes (K8s)是一個用于自動化部署、自動擴縮容和管理容器化應用程式的開源系統,
關于Kubernetes,說得最多的就是自動容器部署、彈性伸縮、應用管理,
(Automated container deployment , scaling , and management)
Kubernetes將組成應用程式的容器分組為邏輯單元,以便于管理和發現,Kubernetes基于在谷歌上運行生產作業負載的15年經驗,結合了來自社區的最佳思想和實踐,是工業生產級別的容器編排系統,
2. Kubernetes特性
- 服務發現和負載均衡
- 不需要修改應用程式來使用不熟悉的服務發現機制,Kubernetes為Pods提供它們自己的IP地址和一組Pods的單個DNS名稱,并且可以在它們之間實作負載平衡,
- 自動打包
- 在不犧牲可用性的情況下,根據容器的資源需求和其他約束條件自動放置容器,混合關鍵作業負載和最佳作業負載,以提高利用率并節省更多資源
- 自動修復
- 重新啟動失敗的容器,在節點死亡時替換和重新調度容器,殺死那些不回應用戶定義的健康檢查的容器,并且在它們準備好提供服務之前不會向客戶端通知它們,
- 自動向前滾動和回滾
- Kubernetes會逐步放開對應用程式或其配置的更改,同時監視應用程式的運行狀況,以確保它不會同時殺死所有實體,如果出現問題,Kubernetes將為您回滾更改,利用不斷增長的部署解決方案生態系統
- 秘鑰和配置管理
- 部署和更新秘鑰和應用程式配置,而無需重新構建映像,也無需在堆疊配置中公開秘鑰
- 水平擴展
- 使用簡單的命令、UI或基于CPU使用情況,自動擴大或縮小應用程式
- 可移植性強
- Kubernetes是開源的,它允許你自由地利用本地、混合或公共云基礎設施,讓你輕松地將作業負載轉移到對你重要的地方
3. 搭建Kubernetes學習環境
初學Kubernetes,建議使用基于docker的解決方案:Kubernetes社區支持的工具,或者在本地機器上配置Kubernetes集群的生態系統中的工具,

如果是生產環境的話,有很多解決方案和供應商可供選擇,推薦:阿里云
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-amd64chmod +x minikubesudo mkdir -p /usr/local/bin/sudo install minikube /usr/local/bin/Minikube基本命令

然而,理想很豐滿,現實很骨感
當你運行 minikube start的時候,你就會發現從k8s.gcr.io拉取鏡像失敗
pingk8s.gcr.ioping 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-amd64chmod +x minikubesudo 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# 獲取服務URLminikube 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可以是下列之一的字串
- kubelet
- apiserver
- proxy
- controller-manager
- etcd
- scheduler
例如:
--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/
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
真實案例
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55424.html
標籤:其他
上一篇:pod-test
下一篇:Kubernetes概述
