首先先安裝好 VirtualBox (各位應該都跟我一樣手邊沒有多餘機器可以執行吧),我自己是用 6.1.30 版的,因為有一次升到 6.1.32 好像有點小問題,因此一直在 6.1.30 沒有升級,現在好像到 6.1.38 了(這應該不用我講了吧,我去年講過了)。
安裝好之後,首先不要先急著開虛擬機,因為我們會需要同時開啟多台虛擬機,且須要讓它們相互溝通,因此我們需要先建個區網,讓他們可以相互溝通。
首先我們先去 檔案 => 喜好設定 => 網路
,右邊加號按下去,建立一個網路。
建好之後就可以按下確定離開了。
接著我們就需要先安裝好 Ubuntu 20.04 (我是用這個啦,其他的版本或作業系統我不確定你等等用我的安裝方式可不可以成功安裝,雖然看似 Debian 系列的似乎都可以的樣子),我們需要 4 台虛擬機, 1 台做 Master(Control Plane) , 2 台 Worker ,剩下 1 台做 NFS 儲存。
安裝好之後,我會先去 裝置 => 插入 Guest Additions CD 映像
,然後她會自動執行,安裝一些東西,接著再進行一些初始化的步驟,讓等一下開發可以更加快速,初始化的東西可以參考下面的檔案。
初始化之後會自動關機,然後我會先去設定好共用資料夾,並設為自動掛載,這樣以後就可以舒服的開發了(用 Shell Script 偷懶)。
然後就可以再次啟動,開始安裝今天的重點 Kubernetes 啦,除了儲存那台之後剩下都需要做以下動作,各位可以參考底下的指令,逐行安裝,這邊我安裝的是 1.24 版。如果各位想偷懶,我也有寫好一個 Shell Script 在下面的連結,下載之後放到剛剛掛載的目錄 D:\Share
然後就可以下 bash k8s_init.sh
進行懶人安裝啦(這就是我為什麼前面要設那些東西的原因)。
#!/bin/sh
# Prepare
sudo apt update
sudo apt install -y curl apt-transport-https ca-certificates software-properties-common
# Install Docker
sudo apt install -y docker.io
sudo usermod -aG docker $USER
sudo systemctl start docker
sudo systemctl enable docker
sudo docker version
systemctl status --no-pager docker
# Add Repo
sudo su -c "curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -"
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update
# Install Kubernetes
version=1.24.4-00
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo apt install -y kubelet=$version kubectl=$version kubeadm=$version
sudo apt-mark hold kubelet kubeadm kubectl
接著到這邊,應該都可以順利安裝吧,接著 Master 那台還需要做以下操作。
sudo kubeadm init --v=5 --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/v0.12.0/Documentation/kube-flannel.yml
kubectl cluster-info
watch kubectl get nodes
接著等到看到那個唯一的節點變成 READY 就可以了。
然後就是重複以上的操作安裝完剩下兩台 Worker ,然後就是要將 Worker 註冊到 Control Plane 。
$ kubeadm token create --print-join-command
然後他會給你一行指令,我們只需要複製到 Worker 貼上並執行就 OK 了(記得 sudo),然後你就會發現 Master 多出了一台節點。
$ watch kubectl get node
偷偷說一下,可以安裝玩一台的 Ubuntu 之後,用再製的方式生出其他兩台,然後先用下面這個指令將每一台的名字改成不一樣的。
$ sudo hostnamectl set-hostname <hostname> # 範例 $ sudo hostnamectl set-hostname master-node
那麼就先到這邊,這邊註冊完應該就會發現有 1 個 Master 跟 2 個 Worker ,接著我們終於可以開始進入 Kubernetes 的世界了。
大家掰~掰~