鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 前言 本文介紹如何在ubuntu上部署k8s集群,大致可以分為如下幾個步驟 修改ubuntu配置 安裝docker 安裝kubeadm、kubectl以及kubelet 配置master節點 將slave節點加入網路 因為k8s分為管理節點和工作 ...
鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站
前言
本文介紹如何在ubuntu上部署k8s集群,大致可以分為如下幾個步驟
- 修改ubuntu配置
- 安裝docker
- 安裝kubeadm、kubectl以及kubelet
- 配置master節點
- 將slave節點加入網路
因為k8s分為管理節點和工作節點,所以我們將要 在master上部署管理節點,在worker上部署工作節點,master和worker節點信息如下
主機名:master,主機IP:192.168.56.11,版本:Ubuntu server 18.04,CPU:2核,記憶體:1G
主機名:worker,主機IP:192.168.56.21,版本:Ubuntu server 18.04,CPU:2核,記憶體:1G
一.修改 ubuntu 配置
首先,k8s 要求我們的 ubuntu 進行一些符合它要求的配置。很簡單,包括以下兩步:關閉 Swap 記憶體 以及 配置免密登錄,這一步兩台主機都需要進行配置
關閉 swap 記憶體
執行如下命令關閉swap記憶體
swapoff -a
配置免密登錄
更新中
二.安裝docker
docker 是 k8s 的基礎,在安裝完成之後也需要修改一些配置來適配 k8s ,所以我們分為 docker 的安裝 與 docker 的配置 兩部分。這一步兩台主機都需要進行安裝
docker 的安裝
docker的安裝再簡單不過,執行下麵命令進行安裝
sudo apt install docker.io
等安裝完成之後使用docker --version來驗證 docker是否可用
docker --version
docker 的配置
kubernetes預設設置cgroup驅動(cgroupdriver)為"systemd",而docker服務的cgroup驅動預設為"cgroupfs",建議將其修改為"systemd",與kubernetes保持一致,可以通過修改docker的/etc/docker/daemon.js文件進行設置,如下結果
然後通過systemctl restart docker命令重啟docker讓配置生效
三.安裝kubeadm、kubectl以及kubelet
安裝完了 docker 就可以下載 k8s 的三個主要組件kubelet、kubeadm以及kubectl。這一步兩台主機都需要進行安裝。先來簡單介紹一下這三者
- kubelet: k8s 的核心服務
- kubeadm: 這個是用於快速安裝 k8s 的一個集成工具,我們在master1和worker1上的 k8s 部署都將使用它來完成。
- kubectl: k8s 的命令行工具,部署完成之後後續的操作都要用它來執行
其實這三個的下載很簡單,直接用apt-get就好了,但是因為某些原因,它們的下載地址不存在了。所以我們需要用國內的鏡像站來下載,也很簡單,依次執行下麵五條命令即可
1.使得 apt 支持 ssl 傳輸
apt-get update && apt-get install -y apt-transport-https
2.下載 gpg 密鑰
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
3.添加 k8s 鏡像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
4.更新源列表
apt-get update
5.安裝 kubectl,kubeadm以及 kubelet
apt-get install -y kubelet kubeadm kubectl
直接在/etc/apt/sources.list里添加https://mirrors.aliyun.com/kubernetes/apt/ 是不行的,因為這個阿裡鏡像站使用的ssl進行傳輸的,所以要先安裝apt-transport-https並下載鏡像站的密鑰才可以進行下載
6.運行systemctl start命令啟動kubelet服務,並設置為開機自動啟動
root@master01:/app# systemctl start kubelet
root@master01:/app# systemctl enable kubelet
四. 配置master 節點
1.系統配置預檢查
在安裝之前需要註意,kubeadm init 命令在執行具體的安裝過程之前,會做一系列的系統預檢查,以確保主機環境符合安裝要求,如果檢查失敗,就直接終止,不在進行init操作。因此我們可以通過kubeadm init phase preflight命令執行預檢查操作,確保系統就緒後再進行init操作,如果檢查結果提示我的CPU和記憶體小於最低要求。
2.準備鏡像
為了加快kubeadm創建集群的過程,可以預先將所有鏡像下載完成。可以通過kubeadm config images list命令查看所需要的鏡像列表
root@master01:/app# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.23.5
k8s.gcr.io/kube-controller-manager:v1.23.5
k8s.gcr.io/kube-scheduler:v1.23.5
k8s.gcr.io/kube-proxy:v1.23.5
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6
因為初始化master節點時,執行命令 kubeadm init 要下載k8s.gcr.io的docker鏡像,但是國內連不上k8s.gcr.io,因此我們可以從阿裡雲先下載kubeadm需要的鏡像,執行如下下載命令
root@master01:/app# kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
下載完成後,通過docker images就可以在本地查看到如下鏡像
然後通過docker tag重命名上面的鏡像,結果如下
root@master01:/app# docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.5 k8s.gcr.io/kube-apiserver:v1.23.5
3.配置master節點
準備工作完成後,就可以運行kubeadm init 命令配置master節點了
root@master01:/app# kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=192.168.0.0/16
配置項說明:
--apiserver-advertise-address k8s 中服務apiserver的部署地址,如果不填寫,預設是本機
--image-repository 拉取的 docker 鏡像源,因為初始化的時候kubeadm會去拉 k8s 的很多組件來進行部署,所以需要指定國內鏡像源,下不然會拉取不到鏡像
--pod-network-cidr k8s 採用的節點網路,因為我們將要使用flannel作為 k8s 的網路,所以這裡填192.168.0.0/16就好
--kubernetes-version: 這個是用來指定你要部署的 k8s 版本的,一般不用填,不過如果初始化過程中出現了因為版本不對導致的安裝錯誤的話,可以用這個參數手動指定
安裝成功後,可看到如下的提示信息
Your Kubernetes control-plane has initialized successfully!
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
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.130.239:6443 --token 6k1i68.aml4dfgyfqwcezkp \
--discovery-token-ca-cert-hash sha256:85eedec31c61177648373d4c7a8a547aa0e0a0816fe91601a99352c84d9545f0
4.配置 kubectl 工具
由於kubeadm預設使用CA證書,所以需要為kubectl配置證書才能訪問master.
安裝安裝成功的提示,非root用戶可以將admin.conf配置文件複製到HOME目錄的.kube子目錄下,命令如下:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果是root用戶,也可以通過設置環境變數KUBECONFIG完成kubectl的配置
export KUBECONFIG=/etc/kubernetes/admin.conf
設置完成後,可以使用kubectl命令行工具對kubernetes集群進行訪問和操作了
# 查看已加入的節點
kubectl get nodes
# 查看集群狀態
kubectl get cs
原文鏈接:https://blog.csdn.net/kity9420/article/details/123674582