新四季網

kubernetes部署教程(國內部署kubernetes集群的最佳實踐)

2023-04-13 21:25:02

項目github地址:https://github.com/usualheart/install_k8s_official

在國內環境下,藉助阿里鏡像源,按照官方的指導,使用腳本一步一步安裝kubernetes。

參考教程

【官方】在ubuntu上安裝Docker

https://docs.docker.com/engine/install/ubuntu/

【官方】安裝kubeadm

https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

【官方】通過kubeadm創建一個單控制面板的集群

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm

版本說明

當前教程所安裝的k8s、docker均默認為最新穩定版本(當前k8s最新約v1.18)

如果需要安裝比較舊的版本,需要確保k8s與docker之間兼容,並在安裝時指定版本

具體安裝方法參見github項目地址中關於如何安裝指定版本k8s的說明。

準備工作

# 下載倉庫代碼到本地git clone https://github.com/usualheart/install_k8s_official.git# 打開文件夾cd install_k8s_official# 配置阿里ubuntu源 可選./ali_ubuntu_sources/set_ali_sources.sh# 暫時關閉swap (利用 vi /etc/fstab 將swap一行注釋掉並重啟即可永久關閉)sudo swapoff -a

安裝配置dockerinstall_docker_for_ubuntu1604.sh按照Docker官方指導,為ubuntu安裝docker

配置docker

注意:docker安裝完成後需要配置cgroup驅動為systemd來增強穩定性 具體說明參考:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/

# Set up the Docker daemoncat > /etc/docker/daemon.json <<EOF{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2"}EOF

mkdir -p /etc/systemd/system/docker.service.d

# Restart Dockersystemctl daemon-reloadsystemctl restart docker

安裝kubeadm kubelet kubectlkubeadm_install.sh按照k8s官方指導,安裝kubeadm、kubelet、kubectlkubeadm_install_from_ali.sh按照阿里官方指導,設置kubernetes阿里源,同時安裝kubeadm、kubelet、kubectl。初始化k8s集群master

使用kubeadm初始化一個master 可以通過修改kubernetes-version來指定kubernetes版本 也可以編寫一個yaml配置文件來實現更複雜的自定義

sudo kubeadm init --apiserver-advertise-address 192.168.56.101 --image-repository=registry.aliyuncs.com/google_containers

--image-repository選項指定了自定義的鏡像倉庫來代替gcr.io 避免國內無法下載的問題

更多細節可以參考k8s官方文檔對kubeadm init的說明

一些配置

在主節點執行:

# To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

安裝pod網絡插件

這裡安裝calico插件

kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

在這一步容易出現拉取calico鏡像失敗的問題,手動拉取:

docker pull calico/cni:v3.14.1

啟用主節點調度

kubectl taint nodes --all node-role.kubernetes.io/master-

打開後pod會調度在主節點運行,這步執行完成後相當於擁有了一個單節點kubernetes

加入節點 以構建多節點k8s集群

在其它虛擬機上邊安裝好相應的docker kubeadm後執行下面的步驟加入到主節點,實現多節點的k8s集群。

kubeadm join --token : --discovery-token-ca-cert-hash sha256:

參數1:

如果沒有token可以在主節點上運行下邊的命令得到:

kubeadm token list

輸出結果類似於這個:

TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS8ewj1p.9r9hcjoqgajrj4gi 23h 2018-06-12T02:51:28Z authentication, The default bootstrap system: signing token generated by bootstrappers: 'kubeadm init'. kubeadm: default-node-token

默認token 24小時過期。如果你在token已經過期後才加入到一個集群,可以通過在主節點上邊運行下邊的指令來創建一個新的token:

kubeadm token create

輸出類似於:

5didvk.d09sbcov8ph2amjw

參數2::

填主節點的ip地址,或者主節點的hostname(如果填hostname需要保證可以通過hostname訪問到主節點)control-plane-port一般默認是6443

參數3:--discovery-token-ca-cert-hash

如果你不知道--discovery-token-ca-cert-hash的值,可以通過運行下邊的命令在主節點上得到:

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ openssl dgst -sha256 -hex | sed 's/^.* //'

結果輸出類似於:

8cb2de97839780a412b93877f8507ad6c94f73add17d5d7058e91741c9d5ec78

ipv6相關的注意

Note: To specify an IPv6 tuple for :, IPv6 address must be enclosed in square brackets, for example: [fd00::101]:2073.

加入結果

填好參數的一個例子:

kubeadm join --token dj7ard.mtehsr9qts4mwgkg 192.168.0.102:6443 --discovery-token-ca-cert-hash sha256:be2258c8445d1eeeac88576b0a62a86bd2575fb991675853c97ef0df79666f38

kubeadm join命令執行後的結果應當如下所示:

[preflight] Running pre-flight checks... (log output of join workflow) ...Node join complete:* Certificate signing request sent to control-plane and response received.* Kubelet informed of new secure connection details.Run 'kubectl get nodes' on control-plane to see this machine join.

幾秒鐘之後,應當可以在主節點上通過運行kubectl get nodes看到新節點已經加入了。

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了