1. 程式人生 > 其它 >內網伺服器加入k8s叢集中——部署k8s叢集

內網伺服器加入k8s叢集中——部署k8s叢集

技術標籤:kuberneteslinux網路運維

採用kubeadm快速部署,如果使用原始碼包部署需用注意多網絡卡的配置。
一、環境準備

1 所有主機關閉selinux
setenforce 0
vi /etc/selinux/config  #將SELINUX=enforcing改為SELINUX=disabled 

2 所有主機關閉swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

3 所有主機將ipv4流量傳遞到iptables鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
EOF

sysctl --system #生效

二、所有主機安裝Docker、kubelet kubeadm kubectl

cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker

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

systemctl daemon-reload
systemctl restart docker

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet

三、master 初始化

kubeadm init \
--apiserver-advertise-address=192.168.1.50 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--v=6

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

四、node節點加入叢集,執行命令前請確保node節點可以ping 通 192.168.1.50

kubeadm join 192.168.1.50:6443 --token xxxxx --node-name node1 \
    --discovery-token-ca-cert-hash sha256:xxxxxx

在master節點上檢視叢集節點狀態

kubectl get nodes -o wide

此時node節點在etcd註冊的是主機的真實網絡卡IP,我們需要修改成虛擬區域網IP

分別編輯node1和node2的 /var/lib/kubelet/kubeadm-flags.env 檔案,新增--node-ip引數,然後重啟kubelet

vi /var/lib/kubelet/kubeadm-flags.env
########
KUBELET_KUBEADM_ARGS="--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.2 --node-ip=192.168.18.10"
########
systemctl daemon-reload && systemctl restart kubelet

稍等30秒後檢視是否修改成功

五、部署CNI網路外掛


如果不能科學上網,需要上傳docker映象,所有主機載入flanneld映象

docker load < flanneld-v0.12.0-amd64.docker 

master節點

kubectl apply -f ./kube-flannel.yaml


[[email protected] ~]# kubectl get all -n kube-system -o wide
NAME                                 READY   STATUS    RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATES
pod/coredns-7ff77c879f-8rvzc         1/1     Running   2          45h   10.244.0.6       master   <none>           <none>
pod/coredns-7ff77c879f-ffqg2         1/1     Running   2          45h   10.244.0.7       master   <none>           <none>
pod/etcd-master                      1/1     Running   2          45h   192.168.1.50     master   <none>           <none>
pod/kube-apiserver-master            1/1     Running   2          39h   192.168.1.50     master   <none>           <none>
pod/kube-controller-manager-master   1/1     Running   3          45h   192.168.1.50     master   <none>           <none>
pod/kube-flannel-ds-amd64-pqf67      1/1     Running   5          17h   192.168.101.43   node2    <none>           <none>
pod/kube-flannel-ds-amd64-vz7d9      1/1     Running   2          17h   192.168.18.10    node1    <none>           <none>
pod/kube-flannel-ds-amd64-xr2pv      1/1     Running   2          17h   192.168.1.50     master   <none>           <none>
pod/kube-proxy-b7p8d                 1/1     Running   8          40h   192.168.18.10    node1    <none>           <none>
pod/kube-proxy-dbdg8                 1/1     Running   3          17h   192.168.101.43   node2    <none>           <none>
pod/kube-proxy-kqktm                 1/1     Running   2          45h   192.168.1.50     master   <none>           <none>
pod/kube-scheduler-master            1/1     Running   3          45h   192.168.1.50     master   <none>           <none>

至此,叢集已經步驟成功