[kubernetes]cent os安裝kubernetes

 [kubernetes]cent os安裝kubernetes

安裝好了k8s的環境,就得來記錄筆記一下,以免之後又需要翻很多文章來查閱,在此安裝的是master and node的叢集架構方式,安裝k8s的話,必須得安裝docker,而安裝docker的方式,筆者就先跳過了,需得特別注意,安裝docker的時候需要是同樣版本哦

master and node安裝

首先把master和node的ip各加入對應,在master上面,我們需要加入node的ip,而在node的機器上則需加入master的ip,可輸入如下指令快速輸入

vim /etc/hosts

以筆者的例子,在master上是如下

10.20.101.20    MasterRd
10.20.101.21 rdWeb

node的話可能就如下

10.20.101.21    rdweb
10.20.101.20 master

我們得關閉防火牆

sudo systemctl stop firewalld && sudo systemctl disable firewalld

接著disable SELinux

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

然後則是關閉swap虛擬記憶體

echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
swapoff -a

接著則是將yum來源加入kubernetes.repo

先輸入

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

接著則輸入如下

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

然後安裝k8s,master和node的版本需一致,所以我們可以指定版本如下

yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2

我們還得需要安裝docker,注意master和node的版本要一致

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

可以用此指令看出目前docker上所有的版本

yum list docker-ce --showduplicates | sort -r

接著安裝我們需要的版本,代碼如下

yum install docker-ce-19.03.4 docker-ce-cli-19.03.4 containerd.io 

然後設定開機時啟動kubelet和docker

systemctl start docker && sudo systemctl enable docker
sudo systemctl enable kubelet && systemctl start kubelet

確認kubeadm的版本,確認已安裝

sudo kubeadm version

最後就是重開機,可以下reboot來重新開機

master部份

初始化master

此為flannel,筆者是用此種
kubeadm init --pod-network-cidr=10.244.0.0/16 
下面為calico初始化的方式
kubeadm init --pod-network-cidr=192.168.0.0/16  

完成之後,可以看到下面的資訊,請把最下面那段紅色框起來的資訊複製起來,之後到node的環境需要使用


接著看到上圖有一段筆者用橘色框起來的三個命令,我們就接著執行這三條命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

最後安裝網路套件

kubectl apply --namespace kube-system -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

node部份

這邊就是把之前複製的命令來node這邊執行,就可以順利把node加進master了

//下面這段是示例,請依你master init後提供的為主
kubeadm join 101.1.1.1:6443 --token zsosmo.oxivs69fnct99fh4 --discovery-token-ca-cert-hash sha256:987713377e8afc5152cc5f422c3c558fd96a75b534e8ccea890d053194e07f1f 

最後則回到master看看,是否有順利把兩台機器設為叢集

kubectl get nodes


如果有看到兩台連結了,就代表我們k8s的安裝皆已完成了,但是因為產生出來的token只有24小時,如果我們有新的node要加入的話,就需要再產生新的token,可使用下面的指令產生新的token

kubeadm token create

查看token

kubeadm token list

查看sha256

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'