我們們再來回顧一下 K8S 叢集架構的元件,在網上找一張叢集架構圖說明一波
1、master 元件
- apiserver
叢集的統一入口,restful 的方式,最後交給 etcd 儲存
- shcheduler
節點排程,選擇 node 節點進行應用部署
- controller-manager
處理叢集中常規後臺任務,一個資源對應一個控制器
- etcd
儲存系統,用於儲存叢集相關的資料
2、node 元件,工作節點
- kubelet
master 排到 node 節點代表,管理本機的容器
- kube-proxy
提供網路代理,負載均衡等操作
k8s 核心概念
1、Pod
- 最小部署的邏輯單元
- 是一組容器的集合
- 共享網路
- 生命週期短暫
2、controller
- 確保預期的 Pod 副本數量
- 無狀態應用部署 / 有狀態應用部署
- 確保所有 node 執行同一個 Pod
- 執行一次性任務和定時任務
3、service
- 定義一組 Pod 的訪問規則
Kubernetes 安裝方式:
- 使用官方提供的 minikube
- 使用 kubeadmin 進行部署,k8s的部署工具,跑在 k8s 裡面,這個使用起來相對簡單
kubeadmin 提供 kubeadmin init 和 kubeadmin join,用於快速部署 k8s 叢集
官網地址為:kubernetes.io/docs/reference/setup...
- 自己使用 kubernetes 二進位制方式安裝部署 (這種部署方式,我們學習的時候一定要走這個步驟,一步一步的去搭建,才能遇到很多問題,進而解決他,熟悉他)
官方提供的 minikube
點選 Launch Terminal ,可以檢視到如下介面
官方給我們提供的 minikube ,版本是 v1.8.1
系統是 Ubuntu 18.04
CPU 2 核
記憶體 2 G
磁碟 145 G 左右
Kubernetes 版本 v1.17.6
Docker 版本 19.03.6
我們們可以使用 kubectl get pods -n kube-system
檢視一下 pod 節點
kubeadmin 進行部署
使用 kubeadmin 來進行部署,相對使用二進位制來部署就會簡單容易一些,先來規劃一下部署方案
平臺規劃
單 master 搭建方式
多 master 搭建方式
kubeadmin 開始部署
使用 kubeadmin 部署 k8s 環境,通過如下 2 條指令即可完成 kubernetes 的部署:
- kubeadm init
建立一個 master 節點
- kubeadm join <master 節點的IP 和埠>
將 node 節點加入到叢集中
測試環境硬體要求
master 節點: 2 核,2G,磁碟 20 G
node 節點:4 核,8G,磁碟 80 G
- 一臺或者多臺機器,作業系統自選,可以是 ubuntu ,可以是 centos
- 硬體配置如上
- 叢集中所有的節點網路互通
- 可以訪問外網,可以拉取映象
- 禁止 swap 分割槽
先來安裝一下 kubectl
官方提供了 4 種方式來安裝 kubecrl
我們們直接使用第 1 種:
1、用如下命令下載最新的 kubectl 版本
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
2、下載 kubectl 校驗和檔案
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
3、驗證 kubectl 的可執行檔案
echo "$(<kubectl.sha256) kubectl" | sha256sum --check
# echo "$(<kubectl.sha256) kubectl" | sha256sum --check
kubectl: OK
出現上述情況,為驗證通過
4、安裝 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
5、檢視我們們安裝的版本
kubectl version --client
# kubectl version --client
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T18:03:20Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
- GitVersion
git 的版本是 v1.22.0
- GoVersion
go 的版本是 1.16.6
- BuildDate
構建時間為 2021-08-04T18:03 ,還算挺新
配置一下 kubectl 自動補全功能
kubectl 的自動補全功能依賴 bash-completion,因此需要我們安裝他
1、安裝 bash-completion
apt-get install bash-completion
2、啟動 kubectl 自動補全功能
在 ~/.bashrc
中匯入(source)補全指令碼
echo 'source <(kubectl completion bash)' >>~/.bashrc
將補全指令碼新增到目錄 /etc/bash_completion.d
中
kubectl completion bash >/etc/bash_completion.d/kubectl
如果 kubectl 有關聯的別名,你可以擴充套件 shell 補全來適配此別名
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
kubernetes 的安裝部署方式步驟相對有點多,這個必須要自己一步一步的實踐,否則是學不到東西的,大家可以多在官網上摸摸魚
kubernetes.io/docs/tasks/tools/ins...
參考資料:
歡迎點贊,關注,收藏
朋友們,你的支援和鼓勵,是我堅持分享,提高質量的動力
好了,本次就到這裡
技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。
我是小魔童哪吒,歡迎點贊關注收藏,下次見~
本作品採用《CC 協議》,轉載必須註明作者和本文連結