問題描述
不知道大伙是如何安裝?K8s,特別還是集群的時(shí)候,我上一次安裝搭建的時(shí)候,那個惡心到我了,真的是一步一個腳印走完整個搭建流程,爬了不少坑。
于是,才有了今天的文章,到底有沒有可以一鍵完美部署 k8s 并且附帶 Dashboard……?那這么問了肯定是有的,否則豈不是在這自作多情~ 哈哈哈,不廢話直接 3 2 1 上干貨!
大佬登場
kubeasz?致力于提供快速部署高可用k8s
集群的工具, 同時(shí)也努力成為k8s
實(shí)踐、使用的參考書;基于二進(jìn)制方式部署和利用ansible-playbook
實(shí)現(xiàn)自動化;既提供一鍵安裝腳本, 也可以根據(jù)安裝指南
分步執(zhí)行安裝各個組件。
kubeasz?從每一個單獨(dú)部件組裝到完整的集群,提供最靈活的配置能力,幾乎可以設(shè)置任何組件的任何參數(shù);同時(shí)又為集群創(chuàng)建預(yù)置一套運(yùn)行良好的默認(rèn)配置,甚至自動化創(chuàng)建適合大規(guī)模集群的BGP Route Reflector網(wǎng)絡(luò)模式。
- 集群特性?Master高可用、離線安裝、多架構(gòu)支持(amd64/arm64)
- 集群版本?kubernetes v1.24, v1.25, v1.26, v1.27, v1.28
- 運(yùn)行時(shí)?containerd?v1.6.x
- 網(wǎng)絡(luò)?calico,?cilium,?flannel,?kube-ovn,?kube-router
[news]?kubeasz 通過cncf一致性測試?詳情
推薦版本對照
Kubernetes version | 1.22 | 1.23 | 1.24 | 1.25 | 1.26 | 1.27 | 1.28 |
kubeasz version | 3.1.1 | 3.2.0 | 3.6.2 | 3.6.2 | 3.6.2 | 3.6.2 | 3.6.2 |
支持系統(tǒng)
- Alibaba Linux?2.1903, 3.2104(notes)
- Alma Linux?8, 9
- Anolis OS?8.x RHCK, 8.x ANCK
- CentOS/RHEL?7, 8, 9
- Debian?10, 11(notes)
- Fedora?34, 35, 36, 37
- openSUSE?Leap 15.x(notes)
- Rocky Linux?8, 9
- Ubuntu?16.04, 18.04, 20.04, 22.04
能夠支持大部分使用systemd的linux發(fā)行版,如果安裝有問題先請查看文檔;如果某個能夠支持安裝的系統(tǒng)沒有在列表中,請留言。
安裝指南
00-規(guī)劃集群和配置介紹 | 02-安裝etcd集群 | 04-安裝master節(jié)點(diǎn) | 06-安裝集群網(wǎng)絡(luò) |
01-創(chuàng)建證書和安裝準(zhǔn)備 | 03-安裝容器運(yùn)行時(shí) | 05-安裝node節(jié)點(diǎn) | 07-安裝集群插件 |
使用指南
常用插件+ | DNS | dashboard | metrics-server | prometheus | efk |
集群管理+ | 管理node節(jié)點(diǎn) | 管理master節(jié)點(diǎn) | 管理etcd節(jié)點(diǎn) | 升級集群 | 備份恢復(fù) |
特性實(shí)驗(yàn) | NetworkPolicy | RollingUpdate | HPA | ||
周邊生態(tài) | harbor | helm | jenkins | gitlab | argocd |
快速指南
- 適用于 kubeasz 3.3.1 以上版本,部署單節(jié)點(diǎn)集群(aio),作為快速體驗(yàn)k8s集群的測試環(huán)境
1、基礎(chǔ)系統(tǒng)配置
- 準(zhǔn)備一臺虛機(jī)配置內(nèi)存2G/硬盤30G以上
- 最小化安裝
Ubuntu 16.04 server或者CentOS 7 Minimal
- 配置基礎(chǔ)網(wǎng)絡(luò)、更新源、SSH登錄等
注意:?確保在干凈的系統(tǒng)上開始安裝,不能使用曾經(jīng)裝過kubeadm或其他k8s發(fā)行版的環(huán)境
2、下載文件
- 下載工具腳本ezdown,舉例使用kubeasz版本3.5.0
export release=3.5.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
- 使用工具腳本下載(更多關(guān)于 ezdown 的參數(shù),運(yùn)行“./ezdown”查看)
- 注意:如果使用 wget github 下載訪問太慢,可以直接在 github 上選中好 3.5.0 tag 版本,下載 zip 解壓縮到對應(yīng)的系統(tǒng)里即可,文件夾里面就會存在一個 ezdown 文件噢~
下載kubeasz代碼、二進(jìn)制、默認(rèn)容器鏡像
# 國內(nèi)環(huán)境
./ezdown -D
# 海外環(huán)境
#./ezdown -D -m standard
【可選】下載額外容器鏡像(cilium,flannel,prometheus等)
# 按需下載
./ezdown -X flannel
./ezdown -X prometheus
...
【可選】下載離線系統(tǒng)包 (適用于無法使用yum/apt倉庫情形)
./ezdown -P
上述腳本運(yùn)行成功后,所有文件(kubeasz代碼、二進(jìn)制、離線鏡像)均已整理好放入目錄/etc/kubeasz
-
/etc/kubeasz
?包含 kubeasz 版本為 ${release} 的發(fā)布代碼 -
/etc/kubeasz/bin
?包含 k8s/etcd/docker/cni 等二進(jìn)制文件 -
/etc/kubeasz/down
?包含集群安裝時(shí)需要的離線容器鏡像 -
/etc/kubeasz/down/packages
?包含集群安裝時(shí)需要的系統(tǒng)基礎(chǔ)軟件
3、安裝集群
- 容器化運(yùn)行 kubeasz
./ezdown -S
- 使用默認(rèn)配置安裝 aio 集群
docker exec -it kubeasz ezctl start-aio
# 如果安裝失敗,查看日志排除后,使用如下命令重新安裝aio集群
# docker exec -it kubeasz ezctl setup default all
4、驗(yàn)證安裝
source ~/.bashrc
kubectl version # 驗(yàn)證集群版本
kubectl get node # 驗(yàn)證節(jié)點(diǎn)就緒 (Ready) 狀態(tài)
kubectl get pod -A # 驗(yàn)證集群pod狀態(tài),默認(rèn)已安裝網(wǎng)絡(luò)插件、coredns、metrics-server等
kubectl get svc -A # 驗(yàn)證集群服務(wù)狀態(tài)
5、清理
以上步驟創(chuàng)建的K8S開發(fā)測試環(huán)境請盡情折騰,碰到錯誤盡量通過查看日志、上網(wǎng)搜索、提交issues
等方式解決;當(dāng)然你也可以清理集群后重新創(chuàng)建。
在宿主機(jī)上,按照如下步驟清理
- 清理集群
docker exec -it kubeasz ezctl destroy default
- 重啟節(jié)點(diǎn),以確保清理殘留的虛擬網(wǎng)卡、路由等信息
附:Dashboard
基于 dashboard 2.2 版本,k8s 1.22 版本,因 dashboard 1.7 以后默認(rèn)開啟了自帶的登錄驗(yàn)證機(jī)制,因此不同版本登錄有差異:
- 舊版(<= 1.6)建議通過apiserver訪問,直接通過apiserver 認(rèn)證授權(quán)機(jī)制去控制 dashboard權(quán)限,詳見舊版文檔
- 新版(>= 1.7)可以使用自帶的登錄界面,使用不同Service Account Tokens 去控制訪問 dashboard的權(quán)限
部署
參考?GitHub - kubernetes/dashboard: General-purpose web UI for Kubernetes clusters
- 增加了通過
api-server
方式訪問dashboard - 增加了
NodePort
方式暴露服務(wù),這樣集群外部可以使用?https://NodeIP:NodePort
?(注意是https不是http,區(qū)別于1.6.3版本) 直接訪問 dashboard。
安裝部署
# ezctl 集成部署組件,xxxx 代表集群部署名
# dashboard 部署文件位于 /etc/kubeasz/clusters/xxxx/yml/dashboard/ 目錄
./ezctl setup xxxx 07
驗(yàn)證部署
# 查看 pod 運(yùn)行狀態(tài)
kubectl get pod -n kube-system | grep dashboard
dashboard-metrics-scraper-856586f554-l6bf4 1/1 Running 0 35m
kubernetes-dashboard-698d4c759b-67gzg 1/1 Running 0 35m
# 查看 dashboard service(重點(diǎn))
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard NodePort 10.68.219.38 <none> 443:24108/TCP 53s
# 查看pod 運(yùn)行日志
kubectl logs -n kube-system kubernetes-dashboard-xxxxxxxx
- 注意上面括號里的重點(diǎn):這個命令可以查看到時(shí)候 dashboard 的端口號是哪個,這里指的是24108(必須放開對應(yīng)端口防火墻)
登陸
因?yàn)閐ashboard 作為k8s 原生UI,能夠展示各種資源信息,甚至可以有修改、增加、刪除權(quán)限,所以有必要對訪問進(jìn)行認(rèn)證和控制,為演示方便這里使用?https://NodeIP:NodePort
?方式訪問 dashboard,支持兩種登錄方式:Kubeconfig、令牌(Token)
注意:?使用chrome瀏覽器訪問?https://NodeIP:NodePort
?可能提示安全風(fēng)險(xiǎn)無法訪問,可以換firefox瀏覽器設(shè)置安全例外,繼續(xù)訪問。
- Token令牌方式登錄(admin)
選擇 Token 方式登錄,復(fù)制下面輸出的admin token 字段到輸入框文章來源:http://www.zghlxwxcb.cn/news/detail-773436.html
# 獲取 Bearer Token,找到輸出中 ‘token:’ 開頭的后面部分
$ kubectl describe -n kube-system secrets admin-user
- Token令牌方式登錄(只讀)
選擇 Token 方式登錄,復(fù)制下面輸出的read token 字段到輸入框文章來源地址http://www.zghlxwxcb.cn/news/detail-773436.html
# 獲取 Bearer Token,找到輸出中 ‘token:’ 開頭的后面部分
$ kubectl describe -n kube-system secrets dashboard-read-user
- Kubeconfig登錄(admin) Admin kubeconfig文件默認(rèn)位置:
/root/.kube/config
,該文件中默認(rèn)沒有token字段,使用Kubeconfig方式登錄,還需要將token追加到該文件中,完整的文件格式如下:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdxxxxxxxxxxxxxx
server: https://192.168.1.2:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: admin
name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRxxxxxxxxxxx
client-key-data: LS0tLS1CRUdJTxxxxxxxxxxxxxx
token: eyJhbGcixxxxxxxxxxxxxxxx
- Kubeconfig登錄(只讀) 首先創(chuàng)建只讀權(quán)限 kubeconfig文件,然后類似追加只讀 token 到該文件,略。
參考
- Dashboard docs
- a-read-only-kubernetes-dashboard
到了這里,關(guān)于Kubernetes - 一鍵安裝部署 K8S(附:Kubernetes Dashboard)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!