# 1. K8s安裝 - Ubuntu 20.04 ###### tags: `Kubernetes` ## 一、安裝 Docker #### 直接folllow下面的連結安裝即可! https://docs.docker.com/engine/install/ubuntu/ 或 下面兩行指令即可 ``` sudo apt update sudo apt install -y docker.io #一開機即執行 sudo systemctl enable docker ``` <br/> ## 二、安裝 Kubernetes (kubelet, kubeadm, kubectl) on Ubuntu #### 1. Install packages to allow apt to use a repository over HTTPS ``` sudo apt get update && sudo apt install -y apt-transport-https curl ``` #### 2. Enter the following to add a signing key: Since you are downloading Kubernetes from a non-standard repository, it is essential to ensure that the software is authentic. This is done by adding a signing key. ``` curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add ``` #### 3. Add Software Repositories Kubernetes is not included in the default repositories. To add them, enter the following: ``` sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" ``` #### 4. Install kubelet, kubeadm and kubectl ``` sudo apt update sudo apt install -y kubelet kubeadm kubectl #是否成功 kubeadm version ``` <br/> ## 三、Kubernetes 部屬 *node 的Kubernetes部屬只要做第六點就行 ( join ) #### 1. Disable the swap memory on each server ``` sudo swapoff -a vim /etc/fstab # 將 /swapfile 這一行註解起來(前方加上 '#' ) - 永久關閉 ``` #### 2. 設定DNS - 修改 host file (同個cluster所有node都需更改host file) ``` hostnamectl set-hostname k8master or sudo vi /etc/hosts ## 加入指令 <IP-Address-of-node><tab><hostname-of-node> ------- 10.0.2.15 k8master 10.0.2.25 k8node1 10.0.2.35 k8node2 ... ``` ![](https://i.imgur.com/2OTDinE.png) <br/> #### 3. Initializing your master and create a cluster ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` ##### 將log的最後兩行指令存起來,之後node要加入此集群,執行此指令即可。例如: ``` kubeadm join 192.168.67.128:6443 --token 9gg19y.0i05a6asikxkdv41 \ --discovery-token-ca-cert-hash sha256:df730b9dc365367eca126dba28d64268e200fd0d81ebd0563668ede2cdd4eb7d ``` <br/> > 如果遇到以下錯誤...執行這兩行指令就好了,[參考連結](https://blog.csdn.net/qq_43580215/article/details/125153959)。 > ![](https://i.imgur.com/5lpO8OS.png) > > 輸入以下指令 > ``` > sudo rm -rf /etc/containerd/config.toml > systemctl restart containerd > ``` <br/> #### 4. 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 ``` > #### Node isolation (Single Node) > ##### 看網路有人說是啟動schedular,不清楚... > > ``` > $kubectl taint nodes --all node-role.kubernetes.io/master- > ``` #### 5. Deploy Pod Network to Cluster ##### A Pod Network is a way to allow communication between different nodes in the cluster. This tutorial uses the flannel virtual network. ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #Verify that everything is running and communicating: kubectl get pods --all-namespaces ``` <br/> > 如果有改自己的network,就要將flannel.yml下載下來並且修改裡面的網路 > ![](https://i.imgur.com/eSZ87wI.png) <br/> #### 6. Join Worker Node to Cluster 以下要在想要加入到某個cluster的node裡面執行: ``` kubeadm join --discovery-token abcdef.1234567890abcdef \ --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443 ``` <br/> The system should display the worker nodes that you joined to the cluster. ``` kubectl get nodes ``` #### 7. We can use below command to debug: ``` journalctl -f -u kubelet ``` #### 8. Modify node role name: ``` $kubectl label node g8node1 node-role.kubernetes.io/worker=worker node/g8node1 labeled $ kubectl get no NAME STATUS ROLES AGE VERSION g8master Ready master 2d v1.18.8 g8node1 Ready worker 27m v1.18.5 ``` #### 9. Renew Token 在master node打 ``` kubeadm token create ``` 查看token ``` kubeadm token list ``` 獲取ca認證sha256編碼的hash值 ``` openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' ``` 將舊token更換為新token,hash值也換成新的,再重新join一次,即可成功加入拉~ ## 參考連結: 1. [How to Install Kubernetes on Ubuntu 18.04](https://phoenixnap.com/kb/install-kubernetes-on-ubuntu) 2. https://ithelp.ithome.com.tw/articles/10235069 3. [Install a pod network add-on 排憂解難](https://ithelp.ithome.com.tw/articles/10209632)