本文是k8s的離線部署,也就是需要的鏡像都已經獲取,本人僅用作筆記,如果能夠幫到你那麼我也樂意之至。
一. 準備工作(針對所有節點,其中主節點需要配好本地私有倉庫)
註釋:準備工作非常重要,如果說你的準備工作做得好,沒問題,基本上一條命令就可以將k8s初始化成功,所以這裏非常重要。其中主節點內存要求2G,CPU,核數要求兩個或者以上。
1. 所有節點關閉防火牆(或者設置防火牆端口,我這裏圖方便,直接關掉了)
systemctl stop firewalld
2. 所有節點禁用swap
vim /etc/fstab
如圖所示,將最後一行加上#號即可。保存退出之後需要重啓才能生效。重啓命令reboot。
3. 配置IP,DNS等信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33
進入這個裏面增加或者修改如下內容:
其中,所有節點都必須配置,然後ip地址,網關等是根據你自己虛擬機來的,你可以通過ifconfig查看自己的虛擬機ip地址。
4. 寫hosts(有多少節點就要寫多少個hosts文件,每個文件要包含所有節點,我這裏是三個節點)
vim /etc/hosts
三臺裏面都要有這些信息。
這一步做完之後也是要reboot重啓生效。
5. 設置時間同步
systemctl start chronyd
systemctl enable chronyd
二. 安裝離線包
1. 解壓縮壓縮文件
我的文件目錄下已經有離線的壓縮文件:
執行紅線標記的三條命令:
執行好之後調整內核參數:
vim /etc/sysctl.d/k8s.conf
寫入如下內容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
2. 從本地拉取服務鏡像到本地倉庫,再從本地倉庫pull下來,打好標籤。(這一步master先做,其他節點先不做。我們先部署好master,再去部署node節點)
我有如下文件:
執行如下命令即可:
其中/var/lib/registry/就是我本地倉庫所在位置。這樣我的本地倉庫就已經有k8s的服務鏡像了。接下來就是把他們拉取到本地,然後打上標籤,打標籤的目的是爲了騙過谷歌的檢查,所以把名字改成谷歌的專有命名方式。
一共需要如下服務鏡像:
三. 初始化k8s
很簡單,一條命令,成功的前提就是前面做的都沒有問題:
kubeadm init --pod-network-cidr 10.1.0.0/16
如果初始化成功,它會告訴你,如果成功了,恭喜你。
到此,master的k8s環境我們就初始化成功了。其他節點的初始化在後面完成。
四. node節點的配置
1. node節點也要配置好docker,若docker已經安裝好,其中有兩個是要配置的:
(1):進入/etc/docker目錄,如果沒有,創建一個。在目錄下創建daemon.json,內容如下:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [ "overlay2.override_kernel_check=true" ]
}
(2)修改 目錄/user/lib/systemd/system/docker.service
修改其內容,在ExecStart=/usr/bin/dockerd後面加上 --insecure-registry 192.168.1.107:5000,其中ip地址是master的ip
修改的目的在於讓node節點能夠從master的本地倉庫pull鏡像。
2. 從本地倉庫pull k8s的服務鏡像,這裏不像master要全部pull下來,這裏只需要pull4個就行了。也要打上標籤。具體操作參見上面master操作,是一樣的。只不過數量變成4個。
分別pull和tag: kube-proxy, coredns, kubernetes-dashboard-amd64, pause
3. 記住node上也要解壓安裝kubeadm,kubectl的那個tar包:
4. 將node節點加入到master。
kubeadm join 192.168.145.xxx:6443 --token 04wk5t.yaboen16zz3mopoo --discovery-token-ca-cert-hash sha256:d7c610568e44b4072cbfeb3f06dadad88086094f7ace223b0de713c44117577a
其中我們--token後面跟了一大段東西,怎麼來的呢?就是master初始化成功的時候有一段信息來的:
如果顯示成功,那麼就加入成功了。
5. 設置用戶的kubectl環境
在命令行打入如下命令即可:
echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> ~/.bash_profile
. ~/.bash_profile
6. 在master上安裝網絡插件:
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
至此,node節點和master幾點都配置好了。我們可以利用一些命令去檢測查看一下:
# 查看集羣狀態
kubectl get cs
# 查看節點狀態
kubectl get node
其中如果kubectl get node 看到所有節點都是ready狀態,那麼就是配置成功啦。