ubuntu18 安裝單機k8s v1.18.2


背景

當我們需要對k8s進行二次開發時,k8s環境是必須的,那么在ubuntu上部署單機k8s是最方便的,便於開發調試

系統准備

本人用的是Ubuntu18,以下以此為例

部署之前,最好切換至root用戶,方便操作

sfeng@sfeng-virtual-machine:~$ sudo passwd root
Enter new UNIX password:  // 輸入root密碼
Retype new UNIX password: // 重復輸入
passwd: password updated successfully
sfeng@sfeng-virtual-machine:~$ su - root
Password: // 輸入root密碼

系統初始化

sudo ufw disable   // 關閉防火牆
sudo systemctl disable ufw  // 永久關閉防火牆
sudo swapoff -a    // 關閉swap
sed -ri 's/.*swap.*/#&/' /etc/fstab  // 永久關閉swap
ubuntu系統默認沒有安裝selinux

// 更換國內鏡像源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's@http://cn.mirrors.ustc.edu.cn/ubuntu/@https://mirrors.tuna.tsinghua.edu.cn/ubuntu/@g' /etc/apt/sources.list
apt update

添加k8s安裝秘鑰

sudo apt update &&  sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg |  sudo apt-key add -

安裝docker

curl -fsSL get.docker.com -o get-docker.sh 
sudo sh get-docker.sh --mirror Aliyun
docker run hello-world // 驗證docker是否安裝完成

配置k8s源

sudo touch /etc/apt/sources.list.d/kubernetes.list
這里選擇阿里雲的源
sudo  echo  "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"  >> /etc/apt/sources.list.d/kubernetes.list

安裝kubelet,kubeadm,kubectl

sudo  apt-get update
// 這里帶上版本號,防止后續部署報錯版本不一致問題
sudo apt  install -y kubelet=1.18.2-00  
sudo apt install -y kubeadm=1.18.2-00
sudo apt install -y kubectl=1.18.2-00
// 保持版本取消自動更新,這里也可以省略
sudo apt-mark hold kubelet kubeadm kubectl

kubeadm 初始化

sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --pod-network-cidr=10.240.0.0/16

等待出現以下信息,則說明初始化成功

// ...
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

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 機器IP:6443 --token q1guce.z76o2a2bb65vhd0u \\
    --discovery-token-ca-cert-hash sha256:2a57a27853c66d608bc544742b57602a21d47c3d09fe58eef15258946d4341c0

配置非 root 的操作

mkdir -p $HOME/.kube
sudo  cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo  chown  $(id -u):$(id -g)  $HOME/.kube/config

coredns 問題解決

這時候node 狀態還是NotReady,因為網絡插件還沒有安裝,這里安裝calico

kubectl apply -f <https://docs.projectcalico.org/v3.10/manifests/calico.yaml>

安裝成功后結果如下

root@sfeng-virtual-machine:~# kubectl get node
NAME                    STATUS   ROLES    AGE   VERSION
sfeng-virtual-machine   Ready    master   28m   v1.18.2
root@sfeng-virtual-machine:~# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                            READY   STATUS    RESTARTS   AGE   IP                NODE                    NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-57546b46d6-hfgx2        1/1     Running   0          23m   192.168.109.129   sfeng-virtual-machine   <none>           <none>
kube-system   calico-node-kpx4p                               1/1     Running   0          23m   192.168.57.23     sfeng-virtual-machine   <none>           <none>
kube-system   coredns-7ff77c879f-gjgjb                        1/1     Running   0          28m   192.168.109.130   sfeng-virtual-machine   <none>           <none>
kube-system   coredns-7ff77c879f-qq6pz                        1/1     Running   0          28m   192.168.109.131   sfeng-virtual-machine   <none>           <none>
kube-system   etcd-sfeng-virtual-machine                      1/1     Running   0          28m   192.168.57.23     sfeng-virtual-machine   <none>           <none>
kube-system   kube-apiserver-sfeng-virtual-machine            1/1     Running   0          28m   192.168.57.23     sfeng-virtual-machine   <none>           <none>
kube-system   kube-controller-manager-sfeng-virtual-machine   1/1     Running   0          28m   192.168.57.23     sfeng-virtual-machine   <none>           <none>
kube-system   kube-proxy-jzfts                                1/1     Running   0          28m   192.168.57.23     sfeng-virtual-machine   <none>           <none>
kube-system   kube-scheduler-sfeng-virtual-machine            1/1     Running   0          28m   192.168.57.23     sfeng-virtual-machine   <none>           <none>

去掉master污點

// 這樣master就能作為計算節點了哈,不然部署單機也沒有意義
kubectl taint nodes --all node-role.kubernetes.io/master-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM