昨天教各位建立部署 K8s 的事前環境的教學,不曉得各位是不是都成功將昨天的步驟都完成了呢?
大家如果都成功安裝完的話,那我們今天就要開始進入我們的主要目的,安裝 Kubernetes 了!
首先,我們要先加入 K8s 相關的 repository
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
建立完之後,有在開發的各位應該都清楚,如果在使用的應用程式升級版本之後,很常會有一些小問題發生,例如:功能衝突、相容性問題等等...
所以,下一個步驟我們要先將我們的版本固定,並且讓它不會自動更新
version=1.18.20-00
echo $version
apt-cache show kubectl | grep "Version: 1.18.20-00"
將版本固定好後,就可以開始安裝我們的 K8s 了!
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
這邊要特別說的是,在安裝之前需要先清除刷新 swap。或許有些讀者看到這邊不知道什麼是 swap。
swap簡單來說,就是假如系統需要更多的記憶體資源,而實體記憶體已經用完,記憶體上不活動的頁面將會被移到 swap 空間。 雖然 swap 空間可以幫助系統增加一小部份容量的 RAM,不過不能將它當作更多記憶體的替代品,因為他的存取速度跟實體硬碟比起來慢太多了。
在我們下 sudo swapoff -a 這個指令後,就是關閉配置文件“/etc/fstab”中所有的交換空間。
之後我們需要建立Docker Daemon
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
Docker Daemon:用來執行管理 Docker image、啟動 container、停止 container 的 service,它是一個 long time service。
建立完之後,就可以正式安裝我們的K8s了!
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker
當各位完成到這步以後,恭喜各位已經得到了一個 K8s 的 "Worker Node"了,也就是說得到了一個在幫忙工作的工人。
再接著以下的步驟後,就可以得到"Master Node"
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
但如果暫時沒有 Worker Node 的話,需要管理的 Master Node先工作的話,我們需要先"污染"他,就需要下以下指令
kubectl taint nodes --all node-role.kubernetes.io/master-
當我們完全安裝好後,可以測試看看是否成功安裝,Status 如果顯示 Ready 的話,就是成功了!
kubectl get nodes
> NAME STATUS ROLES AGE VERSION
> user-virtualbox Ready master 2m v1.18.20
那到這邊,基本的 Kubernetes 就已經建立好了,明天開始會慢慢跟各位介紹一些關於 K8s 的 resource 並實作。
今天就先這樣吧,大家掰掰!