一、 先決條件
- 每個集群節點應該有不同的主機名。
- 需要在 K8s 集群的第一個 master 節點上運行 sealos run 命令。
- 建議使用干凈的操作系統來創建集群。不要自己裝 Docker!
- 支持大多數 Linux發行版,但內核版本建議5以上。例如:Ubuntu、CentOS、Rocky linux。
- 支持 Docker Hub 中的所有 Kubernetes 版本。
- 支持使用 Containerd 作為容器運行時。
- Sealos默認提供了一個私有鏡像倉庫。
- 所有操作必須使用 root 用戶執行。
二、準備(在所有主機上執行)
本次使用的操作系統是debian 12(本機IP地址192.168.80.12),因其內核為6.1.0-28-amd64
1,設置主機名k8s-master
hostnamectl set-hostname k8s-master
2,編輯/etc/hosts文件,增加IP與主機名對應關系
192.168.80.12 k8s-master
3,安裝用到的依賴包
apt -y install curl jq ebtables socat iptables
三、在k8s-master主機上執行部署
1)在線安裝方式
1,下載sealos命令行工具(當前使用v5.0.1版本)
在https://github.com/labring/sealos/releases 下載對應系統的版本,debian 12對應的是:
https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.deb
2,在k8s-master上安裝sealos命令行工具
dpkg -i sealos_5.0.1_linux_amd64.deb
3,在k8s-master上安裝k8s(單節點)
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 \registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4
這里使用了calico網絡插件。需要注意:helm應當在calico之前。
在干凈的服務上直接執行上面的命令,不需要額外多余操作即可安裝一個高可用K8S集群(單節點)
2)離線安裝方式
離線包下載地址:通過網盤分享的文件:K8S
鏈接: https://pan.baidu.com/s/12FMstUEmHWPqSml1VVVgSA?pwd=c2bf 提取碼: c2bf
1,在k8s-master上安裝sealos命令行工具(sealos命令行工具包來源于其它外網環境)
dpkg -i sealos_5.0.1_linux_amd64.deb
2,導入tar包鏡像(tar包鏡像來源于其它外網環境的sealos的save導出)
sealos load -i kubernetes_v1.27.7.tar
sealos load -i helm_v3.9.4.tar
sealos load -i calico_v3.27.4.tar
3,在k8s-master上安裝k8s(單節點)
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 \registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4
這里使用了calico網絡插件。需要注意:helm應當在calico之前。
在干凈的服務上直接執行上面的命令,不需要額外多余操作即可安裝一個高可用K8S集群(單節點)
四、k8s鏡像部署
當前安裝的k8s集群使用containerd作為容器運行;使用calico作為網絡插件CNI;sealos默認提供了一個私有鏡像倉庫,sealos的私有倉庫默認運行在集群的第一個節點上,第一個節點是指創建集群的時候輸入的第一個節點的地址,使用下面的命令查看守護進程的狀態。
systemctl status registry.service
1,使用sealos login命令來登陸,默認用戶名和密碼為 admin:passw0rd
sealos login -u admin -p passw0rd 192.168.80.12:5000
注:192.168.80.12:5000 (k8s-master的IP地址)為私有鏡像倉庫中地址
2,sealos導入docker鏡像
sealos load -i GBase8sV8.8_3513x25_csdk_x64_20250225.tar
3,sealos重新打tag,注意tag的寫法,使用私有鏡像時,需要該寫法。
sealos tag localhost/gbase8sv8.8:3513x25_csdk_x64 \192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
4,推送到本地的私有鏡像
sealos push 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
5,GBase8s單機部署yaml文件(gbase8s-standard-deployment.yaml)
# gbase8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: gbase8s-deployment
spec:replicas: 1selector:matchLabels:app: gbase8stemplate:metadata:labels:app: gbase8sannotations:# 使用calico方式,指定使用IP地址,數據庫集群中必須指定IP# 所有IP網段,使用kubectl get pod -A -o wide | grep calico-apiserver獲取# 或者k8s-master上使用ip a獲取的tunl0網卡對應的網絡cni.projectcalico.org/ipAddrs: "[\"100.116.59.101\"]"spec:containers:- name: gbase8s# 鏡像地址image: 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64ports:- containerPort: 9088---
apiVersion: v1
kind: Service
metadata:name: gbase8s-service
spec:selector:app: gbase8sports:- name: sqlexecport: 9088targetPort: 9088nodePort: 30088type: NodePort
6,部署GBase8s(單節點)服務
使用kubectl apply部署GBase8s(單節點)的k8s服務
kubectl apply -f gbase8s-standard-deployment.yaml
7,查看pod部署
使用kubectl get pod查看部署情況
kubectl get pod -o wide
示例輸出如下:
NAME READY STATUS RESTARTS AGE
gbase8s-deployment-6cd4dbc946-ltfk6 1/1 Running 0 88m
五、一些常用的sealos和kubectl(命令與docker有很大的相同)
1) kubectl命令
顯示service
kubectl get service -o wide
顯示service詳細信息
kubectl describe service gbase8s-service
刪除service
kubectl delete service gbase8s-service
顯示deployment
kubectl get deployment -o wide
顯示deployment詳細信息
kubectl describe deployment gbase8s-deployment
刪除depolyment
kubectl delete deployment gbase8s-deployment
顯示pod
kubectl get pod -o wide
顯示pod詳細信息
kubectl describe pod gbase8s-deployment-6cd4dbc946-ltfk6
2) sealos命令
導入docker鏡像
sealos load -i GBase8sV8.8_3513x25_csdk_x64_20250225.tar
給鏡像打新的tag
sealos tag localhost/gbase8sv8.8:3513x25_csdk_x64 \
192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
推送至本地鏡像倉庫
sealos push 192.168.80.12:5000/gbase8sv8.8:3513x25_csdk_x64
清理k8s集群
sealos reset
增加master節點
sealos add --masters 192.168.0.13,192.168.0.14
增加node節點
sealos add --nodes 192.168.0.21,192.168.0.22