Centos7安裝k8s v1.16.0

k8s 一臺master,兩臺node節點安裝過程記錄如下
一、安裝環境

[root@k8sm ~]# cat /proc/version 
Linux version 3.10.0-1062.12.1.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Feb 4 23:02:59 UTC 2020

二、安裝規劃
docker版本:k8s v1.16.0 推薦的是docker-ce 18.09.9 這個版本,可以看下,k8s對應的docker版本,否則安裝的時候會有告警。

[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 18.03.1-ce. Latest validated version: 18.09

注意機器必須爲2C,2g以上,否則安裝的時候會報錯

[root@k8sm ~]# docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:20:16 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:23:58 2018
  OS/Arch:      linux/amd64
  Experimental: false
[root@k8sm ~]# 

master: 192.168.47.129 k8sm
node1:192.168.47.132 k8ss1
node2:192.168.47.133 k8ss2

k8s版本:v1.16.0

三、安裝前工作
1.確認是否已配置靜態IP
2.修改hostname
3.安裝docker
4.配置k8s安裝環境
(1)關閉防火牆

systemctl disable firewalld
systemctl stop firewalld

(2)關閉selinux

setenforce 0
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

(3)禁用swap

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

(4)修改內核參數

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

(5)重新加載配置文件

sysctl --system

(6)配置阿里的k8s yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

四、安裝kubeadm、kubelet、kubectl(僅master需要安裝)
master:

yum install -y kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0

node:

yum install -y  kubeadm-1.16.0-0 kubelet-1.16.0-0

安裝完成後,重啓k8s服務:

systemctl enable kubelet && systemctl start kubelet

五、初始化k8s
(1)master上:
使用阿里雲的源registry.aliyuncs.com/google_containers
初始化k8s

kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --apiserver-advertise-address 192.168.47.129 --pod-network-cidr=10.244.0.0/16 --token-ttl 0

–apiserver-advertise-address 192.168.47.129 根據master的ip修改
初始化安裝完成後根據提示輸入命令:

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

獲取node加入集羣的命令

kubeadm token create --print-join-command 

(2)node上
執行master中“kubeadm token create --print-join-command” 獲取的命令
(3)驗證
加入集羣后,在master上驗證。三臺機器已在集羣中(status爲notready後續安裝flannel)

[root@k8sm tmp]# kubectl get nodes
NAME    STATUS     ROLES    AGE    VERSION
k8sm    NotReady   master   137m   v1.16.0
k8ss1   NotReady   <none>   96m    v1.16.0
k8ss2   NotReady   <none>   95m    v1.16.0

六、安裝flannel(master上)
已將kube-flannel.yml中的quay.io,修改爲國內可以訪問的地址quay-mirror.qiniu.com
配置文件放網盤了需要的自取:
鏈接:https://pan.baidu.com/s/18La-DOb9-iVLtqldMIh26g
提取碼:q4iv
或者能翻牆的也可以直接wget:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 

安裝fannel

kubectl apply -f kube-flannel.yml

安裝完後驗證:

[root@k8sm tmp]# kubectl get pods --all-namespaces
NAMESPACE     NAME                           READY   STATUS    RESTARTS   AGE
kube-system   coredns-58cc8c89f4-6l2bd       1/1     Running   0          177m
kube-system   coredns-58cc8c89f4-lfr64       1/1     Running   0          177m
kube-system   etcd-k8sm                      1/1     Running   0          176m
kube-system   kube-apiserver-k8sm            1/1     Running   0          176m
kube-system   kube-controller-manager-k8sm   1/1     Running   0          176m
kube-system   kube-flannel-ds-amd64-fg7qq    1/1     Running   0          17m
kube-system   kube-flannel-ds-amd64-gmhhz    1/1     Running   0          17m
kube-system   kube-flannel-ds-amd64-lzm74    1/1     Running   0          17m
kube-system   kube-proxy-29p5w               1/1     Running   0          177m
kube-system   kube-proxy-9bgr4               1/1     Running   0          135m
kube-system   kube-proxy-gzhmw               1/1     Running   0          136m
kube-system   kube-scheduler-k8sm            1/1     Running   0          176m
[root@k8sm tmp]# kubectl get nodes
NAME    STATUS   ROLES    AGE    VERSION
k8sm    Ready    master   177m   v1.16.0
k8ss1   Ready    <none>   135m   v1.16.0
k8ss2   Ready    <none>   134m   v1.16.0

三節點的status爲ready,且pod均爲runing,至此安裝完成
七、安裝過程中遇到的問題
1.沒有禁用swap
[ERROR Swap]: running with swap on is not supported. Please disable swap
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
沒有禁用swap,禁用swap後解決
2.初始化的過程中遇到:

 [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

解決方法:

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

3.在裝完flannel後 kubectl get nodes檢查發現有一個節點還是notready

[root@k8sm tmp]# kubectl get nodes
NAME    STATUS     ROLES    AGE    VERSION
k8sm    Ready      master   161m   v1.16.0
k8ss1   NotReady   <none>   120m   v1.16.0
k8ss2   Ready      <none>   119m   v1.16.0

檢查 pod發現:kube-system kube-flannel-ds-amd64-fg7qq 0/1 Init:ErrImagePull 0 79s
有報 Init:ErrImagePull的錯誤

[root@k8sm tmp]# kubectl get pods --all-namespaces
NAMESPACE     NAME                           READY   STATUS              RESTARTS   AGE
kube-system   coredns-58cc8c89f4-6l2bd       1/1     Running             0          161m
kube-system   coredns-58cc8c89f4-lfr64       1/1     Running             0          161m
kube-system   etcd-k8sm                      1/1     Running             0          160m
kube-system   kube-apiserver-k8sm            1/1     Running             0          160m
kube-system   kube-controller-manager-k8sm   1/1     Running             0          160m
kube-system   kube-flannel-ds-amd64-fg7qq    0/1     Init:ErrImagePull   0          79s
kube-system   kube-flannel-ds-amd64-gmhhz    1/1     Running             0          79s
kube-system   kube-flannel-ds-amd64-lzm74    1/1     Running             0          79s
kube-system   kube-proxy-29p5w               1/1     Running             0          161m
kube-system   kube-proxy-9bgr4               1/1     Running             0          119m
kube-system   kube-proxy-gzhmw               1/1     Running             0          120m
kube-system   kube-scheduler-k8sm            1/1     Running             0          160m

通過網上各種搜索,可能是Kubernetes無法找到本地的flannel鏡像導致的。
分別在三臺機器上執行docker images|grep fla

[root@k8sm tmp]# docker images|grep fla
quay-mirror.qiniu.com/coreos/flannel                              v0.11.0-amd64       ff281650a721        13 months ago       52.6MB
[root@k8ss1 ~]# docker images|grep fla
[root@k8ss2 ~]# docker images|grep fla
quay-mirror.qiniu.com/coreos/flannel                 v0.11.0-amd64       ff281650a721        13 months ago       52.6MB

發現確實k8ss1上沒有這個本地鏡像
直接在k8ss2上導出進行到共享文件夾並在k8ss1上導入

[root@k8ss2 mnt]# docker save -o /mnt/fannel.tar.gz quay-mirror.qiniu.com/coreos/flannel
[root@k8ss1 mnt]# docker load --input ops.v1.tar.gz

最後再檢查下,狀態都爲running和ready

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章