使用kubeadm-ha腳本一鍵安裝K8S


# 使用kubeadm-ha腳本一鍵安裝K8S

前情提示

以前安裝k8s集群的時候使用的是k8s官網的教程 使用的鏡像源都是國外的 速度慢就不說了 還有一些根本就下載不動 導致安裝失敗 最后在群里小伙伴(蘑菇博客交流群/@你釘釘響了)的建議下使用一個開源的一鍵安裝k8s的腳本就好了起來了
Github地址:https://github.com/TimeBye/kubeadm-ha

環境准備

官網的安裝說明也很簡單但是還有些細節還是沒有提到 所以我自己照着官網的教程 補充了一些細節

硬件系統要求

  • Master節點:2C4G +
  • Worker節點:2C4G +

使用centos7.7安裝請按上面配置准備好3台centos,1台作為Master節點,2台Worker節點

本方式為1主2worker的配置

這是我的各個節點的配置

主機名 ip 配置
k8s-master 192.168.177.130 2C4G
k8s-node1 192.168.177.131 2C2G
k8s-node2 192.168.177.132 2C2G

centos准備

在安裝之前需要准備一些基礎的軟件環境用於下載一鍵安裝k8s的腳本和編輯配置

centos網絡准備

安裝時需要連接互聯網下載各種軟件 所以需要保證每個節點都可以訪問外網

ping baidu.com

建議關閉centos的防火牆

systemctl stop firewalld  && systemctl disable firewalld && systemctl status firewalld 

同時需要保證各個節點間可以相互ping通

ping 其他節點ip

CentOS軟件准備

ssh 連接到 Master 節點上安裝 Git

yum install git -y

部署k8s前配置

下載部署腳本

在Master節點clone安裝腳本 腳本地址

git clone --depth 1 https://github.com/TimeBye/kubeadm-ha

進入到下載的部署腳本的目錄

cd kubeadm-ha

安裝 Ansible 運行環境

在master節點安裝Ansible環境

sudo ./install-ansible.sh

修改安裝的配置文件

由於我是一個master兩個node的方式構建的centos所以我們需要修改example/hosts.s-master.ip.ini 文件

vi example/hosts.s-master.ip.ini 

具體要修改的就是ip 和密碼 其他的保持默認

我的hosts.s-master.ip.ini 文件預覽

; 將所有節點信息在這里填寫
;    第一個字段                  為遠程服務器內網IP
;    第二個字段 ansible_port     為節點 sshd 監聽端口
;    第三個字段 ansible_user     為節點遠程登錄用戶名
;    第四個字段 ansible_ssh_pass 為節點遠程登錄用戶密碼
[all]
192.168.177.130 ansible_port=22 ansible_user="root" ansible_ssh_pass="moxi"
192.168.177.131 ansible_port=22 ansible_user="root" ansible_ssh_pass="moxi"
192.168.177.132 ansible_port=22 ansible_user="root" ansible_ssh_pass="moxi"

; 單 master 節點不需要進行負載均衡,lb節點組留空。
[lb]

; 注意etcd集群必須是1,3,5,7...奇數個節點
[etcd]
192.168.177.130
192.168.177.131
192.168.177.132

[kube-master]
192.168.177.130

[kube-worker]
192.168.177.130
192.168.177.131
192.168.177.132

; 預留組,后續添加master節點使用
[new-master]

; 預留組,后續添加worker節點使用
[new-worker]

; 預留組,后續添加etcd節點使用
[new-etcd]

; 預留組,后續刪除worker角色使用
[del-worker]

; 預留組,后續刪除master角色使用
[del-master]

; 預留組,后續刪除etcd角色使用
[del-etcd]

; 預留組,后續刪除節點使用
[del-node]

;-------------------------------------- 以下為基礎信息配置 ------------------------------------;
[all:vars]
; 是否跳過節點物理資源校驗,Master節點要求2c2g以上,Worker節點要求2c4g以上
skip_verify_node=true
; kubernetes版本
kube_version="1.18.14"
; 負載均衡器
;   有 nginx、openresty、haproxy、envoy  和 slb 可選,默認使用 nginx
;   為什么單 master 集群 apiserver 也使用了負載均衡請參與此討論: https://github.com/TimeBye/kubeadm-ha/issues/8
lb_mode="nginx"
; 使用負載均衡后集群 apiserver ip,設置 lb_kube_apiserver_ip 變量,則啟用負載均衡器 + keepalived
; lb_kube_apiserver_ip="192.168.56.15"
; 使用負載均衡后集群 apiserver port
lb_kube_apiserver_port="8443"

; 網段選擇:pod 和 service 的網段不能與服務器網段重疊,
; 若有重疊請配置 `kube_pod_subnet` 和 `kube_service_subnet` 變量設置 pod 和 service 的網段,示例參考:
;    如果服務器網段為:10.0.0.1/8
;       pod 網段可設置為:192.168.0.0/18
;       service 網段可設置為 192.168.64.0/18
;    如果服務器網段為:172.16.0.1/12
;       pod 網段可設置為:10.244.0.0/18
;       service 網段可設置為 10.244.64.0/18
;    如果服務器網段為:192.168.0.1/16
;       pod 網段可設置為:10.244.0.0/18
;       service 網段可設置為 10.244.64.0/18
; 集群pod ip段,默認掩碼位 18 即 16384 個ip
kube_pod_subnet="10.244.0.0/18"
; 集群service ip段
kube_service_subnet="10.244.64.0/18"
; 分配給節點的 pod 子網掩碼位,默認為 24 即 256 個ip,故使用這些默認值可以納管 16384/256=64 個節點。
kube_network_node_prefix="24"

; node節點最大 pod 數。數量與分配給節點的 pod 子網有關,ip 數應大於 pod 數。
; https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr
kube_max_pods="110"

; 集群網絡插件,目前支持flannel,calico
network_plugin="calico"

; 若服務器磁盤分為系統盤與數據盤,請修改以下路徑至數據盤自定義的目錄。
; Kubelet 根目錄
kubelet_root_dir="/var/lib/kubelet"
; docker容器存儲目錄
docker_storage_dir="/var/lib/docker"
; Etcd 數據根目錄
etcd_data_dir="/var/lib/etcd"

升級內核

修改完配置文件后建議升級內核

ansible-playbook -i example/hosts.s-master.ip.ini 00-kernel.yml

內核升級完畢后重啟所有節點 在master node1 node2上執行

reboot

開始部署k8s

等待所有的節點重啟完成后進入腳本目錄

cd kubeadm-ha

執行一鍵部署命令

ansible-playbook -i example/hosts.s-master.ip.ini 90-init-cluster.yml

查看節點運行情況

kubectl get nodes

等待所有節點ready 即為創建成功

NAME             STATUS   ROLES                AGE     VERSION
192.168.28.128   Ready    etcd,worker          2m57s   v1.18.14
192.168.28.80    Ready    etcd,master,worker   3m29s   v1.18.14
192.168.28.89    Ready    etcd,worker          2m57s   v1.18.14

集群重置

如果部署失敗了,想要重置整個集群【包括數據】,執行下面腳本

ansible-playbook -i example/hosts.s-master.ip.ini 99-reset-cluster.yml

部署kuboard

安裝Docker

因為我們需要拉取鏡像,所以需要在服務器提前安裝好Docker,首先配置一下Docker的阿里yum源

cat >/etc/yum.repos.d/docker.repo<<EOF
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/\$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

然后yum方式安裝docker

# yum安裝
yum -y install docker-ce
# 查看docker版本
docker --version  
# 開機自啟
systemctl enable docker
# 啟動docker
systemctl start docker

配置docker的鏡像源

cat >> /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

然后重啟docker

systemctl restart docker

安裝Kuboard【可選】

簡介

Kuboard 是一款免費的 Kubernetes 圖形化管理工具,力圖幫助用戶快速在 Kubernetes 上落地微服務。

Kuboard文檔:https://kuboard.cn/

安裝

在master節點執行

kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml

查看 Kuboard 運行狀態

kubectl get pods -l k8s.kuboard.cn/name=kuboard -n kube-system

輸出結果如下所示。注意:如果是 ContainerCreating 那么需要等待一會

NAME                       READY   STATUS    RESTARTS   AGE
kuboard-74c645f5df-cmrbc   1/1     Running   0          80s

訪問Kuboard

Kuboard Service 使用了 NodePort 的方式暴露服務,NodePort 為 32567;您可以按如下方式訪問 Kuboard。

# 格式
http://任意一個Worker節點的IP地址:32567/

# 例如,我的訪問地址如下所示
http://192.168.177.130:32567/

頁面如下所示:

image-20210107211525789

第一次訪問需要輸入token 我們獲取一下 token在master節點執行

echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)

獲取到的 token,然后粘貼到框中,我的 token 格式如下:

eyJhbGciOiJSUzI1NiIsImtpZCI6ImY1eUZlc0RwUlZha0E3LWZhWXUzUGljNDM3SE0zU0Q4dzd5R3JTdXM2WEUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tMmJsamsiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYzhlZDRmNDktNzM0Zi00MjU1LTljODUtMWI5MGI4MzU4ZWMzIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.MujbwGnkL_qa3H14oKDT1zZ5Fzt16pWoaY52nT7fV5B2nNIRsB3Esd18S8ztHUJZLRGxAhBwu-utToi2YBb8pH9RfIeSXMezFZ6QhBbp0n5xYWeYETQYKJmes2FRcW-6jrbpvXlfUuPXqsbRX8qrnmSVEbcAms22CSSVhUbTz1kz8C7b1C4lpSGGuvdpNxgslNFZTFrcImpelpGSaIGEMUk1qdjKMROw8bV83pga4Y41Y6rJYE3hdnCkUA8w2SZOYuF2kT1DuZuKq3A53iLsvJ6Ps-gpli2HcoiB0NkeI_fJORXmYfcj5N2Csw6uGUDiBOr1T4Dto-i8SaApqmdcXg

最后即可進入 kuboarddashboard 界面

image-20210107211713726

卸載Kuboard

當我們 kuboard 不想使用的時候,我們就可以直接卸載

kubectl delete -f https://kuboard.cn/install-script/kuboard.yaml
kubectl delete -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml

Rancher部署【可選】

kuboard和rancher建議部署其中一個

helm安裝

使用helm部署rancher會方便很多,所以需要安裝helm

curl -O http://rancher-mirror.cnrancher.com/helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
tar -zxvf helm-v3.2.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin

驗證

helm version

輸入以下內容說明helm安裝成功

version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

添加rancher chart倉庫

helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
helm repo update

安裝rancher

helm install rancher rancher-stable/rancher \
 --create-namespace	\
 --namespace cattle-system \
 --set hostname=rancher.local.com
等待 Rancher 運行:
kubectl -n cattle-system rollout status deploy/rancher

輸出信息:

Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM