k8s集羣v1.17.4安裝

0. 關於kubernetes版本變更和停用的說明

大概是2020年3月12日左右 k8s官方停止對老版本k8s的支持 按照以前的安裝方法安裝的k8s 一方面是必要的鏡像下載不下來 另外一方面是kube-flannel.yml文件版本過老無法成功創建flannel網絡。經過反覆安裝和測試 k8sv1.17.3+flannelv0.12纔可以順利完成安裝 當然 採用更新的k8s版本也可以 本文安裝的是1.17.4的版本 下邊使用的flannel也是最新的 可以放心使用

寫文章時的時間是 2020年3月15日14:03:29

1. 關於主機要求的簡單說明

系統:centos7 即可 我用的是centos7.4
內存:如果是字符界面的系統 2G就可以 如果圖形化界面 建議3G
CPU:我的是2顆 每個單核 這個沒太大所謂
網絡:可以根據自己喜好 選擇NAT 橋接 或者僅主機 主從節點能要能夠聯通 在同一網段

別的好像也沒有什麼需要說的了

2. 環境準備

1)設置主機名並修改hosts文件

[root@localhost ~]# hostnamectl set-hostname k8s-master01
[root@localhost ~]# hostnamectl set-hostname k8s-node01
[root@localhost ~]# hostnamectl set-hostname k8s-node02

192.168.20..130 k8s-master01
192.168.20.131 k8s-node01
192.168.20.132 k8s-node02

2) 關閉防火牆 selinux swap分區

[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld
[root@localhost ~]# swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
[root@localhost ~]# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

3)必要模塊的加載

查看:lsmod | grep br_netfilter
如果沒有看到 則加載: 
[root@localhost ~]# modprobe br_netfilter

4)修改內核參數 開啓網橋模式

[root@localhost ~]# cat <<EOF >  /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@localhost ~]# sysctl -p /etc/sysctl.d/kubernetes.conf

5)調整系統時區

設置系統時區爲 中國/上海
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai

進行網絡對時
[root@localhost ~]# ntpdate ntp.ntsc.ac.cn

3. 安裝docker

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum -y install docker-ce

# 重啓docker服務
[root@localhost ~]# systemctl daemon-reload && systemctl restart docker && systemctl enable docker

4. 安裝kubeadm等必備服務

[root@localhost ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
[root@localhost ~]# yum -y install kubeadm-1.17.4 kubectl-1.17.4 kubelet-1.17.4
[root@localhost ~]# systemctl enable kubelet.service

5. 初始化主節點、安裝flannel網絡

從k8s官方下載鏡像特別慢 建議從阿里雲下載 完全可用

主節點初始化
[root@localhost ~]# kubeadm init  --kubernetes-version=v1.17.4 --apiserver-advertise-address=192.168.20.130 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers

安裝flannel網絡
[root@localhost ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@localhost ~]# kubectl apply -f kube-flannel.yml

關於從節點下載鏡像:
在主節點上執行kubeadm config images list 可以查看用到的鏡像
從節點pull這些鏡像下來即可

flannel網絡部署完成後 使用ifconfig看master 會發現一個叫flannel.1的網橋 如下

在這裏插入圖片描述

兩個node節點執行加入集羣的指令(在初始化時候屏幕上輸出的日誌裏) 加入集羣

[root@localhost ~]# kubeadm join 192.168.20.130:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:a5e9dfa94b5fd8cdb4132df91d584a323bdbd46dbae558a15d6ce9a2711ae300

master端查看節點狀態

[root@k8s-master01 flannel]# kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
k8s-master01   Ready    master   19m     v1.17.4
k8s-node01     Ready    <none>   25s     v1.17.4
k8s-node02     Ready    <none>   2m16s   v1.17.4

6. 問題及解決

1. 創建flannel時報錯如下的時候 重新初始化

[root@k8s-master01 ~]# kubectl apply -f kube-flannel.yml 
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")

重新初始化的操作

[root@k8s-master01 ~]# kubeadm reset
之後就是初始化的操作了

2. 從節點加入集羣時報錯

如下 如果加入時報錯
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
        [ERROR Port-10250]: Port 10250 is in use
        [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

此時 從節點kubeadm reset一下再試就好了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章