Centos7 安装 Kubernetes 完整流程

May . 20 . 2021

部署目标

1. 在所有节点上安装 Docker 和 Kubeadm
2. 部署 Kubernates Master

环境准备

  1. 两台虚拟机 Centos7.x-86_64
  2. 硬件配置: RAM >= 2GB, CPU >= 2,硬盘 >= 30GB
  3. 虚拟机可以访问外网,并且网络可以互相连通
  4. 禁止 swap 分区

安装步骤

Virtualbox 安装 CentOS

    网上基于 VirtualBox 安装 Centos 的教材有很多,这里不再过多赘述,这里仅记录下如何配置虚拟机双网卡, 实现固定IP, 且能访问外网的方法

设置网卡1为: 仅主机host-only 

                                            1.png


设置网卡2为: 网络转换地址 NAT

                                             2.png


查看虚拟机网络,并记住 IP地址网段, 在宿主机执行命令。如下图:

                                                  3.png

重启虚拟机设置静态IP地址,编辑网络配置文件, 执行:

>> vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改文件内容为如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=08012b4a-d6b1-41d9-a34d-e0f52a123e7a
DEVICE=enp0s3
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.刚才虚拟机的网段.你想要的IP (如: 192.168.56.10)

修改完毕后重启虚拟机网络服务

>> systemctl restart network

查看对应网卡的ip

>> ip addr |grep 192

此时虚拟机既可以访问外网,也能和宿主机进行通信。



配置虚拟机并安装 kubeadm,kubelet and kubectl

1. 安装基本软件包

>> yum install wget net‐tools vim bash‐comp* ‐y

2. 配置虚拟机 yum 源, iptables

删除原有源

>> rm -f /etc/yum.repos.d/*

重新下载阿里云源

>> wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

列出 yum 各软件包

>> yum list

清除缓存

>> yum clean all

3. 设置主机名称

>> hostnamectl set‐hostname master

重新登陆虚拟机

4. 配置 Master 节点

执行

>> vim /etc/hosts

新增内容(注意替换IP地址为自己的)

192.168.56.10 master
192.168.56.11 node1

关闭防火墙

>> systemctl stop firewalld
>> systemctl disable firewalld

关闭 SeLinux

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

关闭 Swap

>> swapoff -a
>> yes | cp /etc/fstab /etc/fstab_bak
>> cat /etc/fstab_bak |grep -v swap > /etc/fstab

5. 配置Docker,k8s的阿里云源(源地址可能过时,注意替换)

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

执行

>> wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

>> yum clean all

>> yum repolist

6. 安装并启动Docker

>> yum install -y docker-ce.x86_64 docker-ce-cli.x86_64 containerd.io.x86_64

配置 Docker 加速镜像

>> mkdir /etc/docker
>> cat > /etc/docker/daemon.json <

镜像地址可以访问 这个网址 免费获取一个,上面的可能已经过时无法使用

执行

>> vi /usr/lib/systemd/system/docker.service

找到指定位置并修改内容为,不要全部替换!

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd

重启 Docker

>> systemctl daemon-reload
>> systemctl enable docker
>> systemctl restart docker

7. 安装 kubeadm,kubelet,kubectl

卸载旧版本

yum remove -y kubelet kubeadm kubectl

安装

yum install -y kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3

重启 Docker,kubelet

systemctl enable kubelet && systemctl start kubelet


这里可以对系统打一个备份, 以后方便复用



初始化 Master 节点

1. 将桥接的 IPV4 流量传递到 iptables 链

>> echo "1" >/proc/sys/net/ipv4/ip_forward
>> echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

修改配置

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

3. 初始化主节点

>> kubeadm init --kubernetes-version=1.19.3 \
--apiserver-advertise-address=替换为当前虚拟机的ip(如: 192.168.56.10) \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

执行

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

4. 安装网络插件

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

这里如果执行失败可以将网址里的内容保存到本地文件内再执行

执行

>> kubectl get node

若出现下图所示, 则说明 Master 节点配置成功

4.png



初始化 Node 节点

1. 配置网络信息

 将刚才的主节点备份复制一份为Node节点, 如上修改网络配置文件中的 IP 地址为对应的节点IP(如:192.168.56.11)。

2. 加入集群

默认的 token 的有效期为 24 小时,当过期之后,该 token 就不可用了, 执行如下命令重新生成 token(需要在master端执行):

>> kubeadm token create --print-join-command

复制生成的命令在Node节点中执行, 如下: 

>> kubeadm join 192.168.99.101:6443 --token vrqf1w.dyg1wru7nz0ut9jz    --discovery-token-ca-cert-hash sha256:1832d6d6c8386de5ecb1a7f512cfdef27a6d14ef901ffbe7d3c01d999d794f90

3. 将 master 节点的 admin.conf 拷贝到 node 节点中

在 master 节点中执行

>> scp /etc/kubernetes/admin.conf root@node1:/etc/kubernetes/

4. 配置 Kubeconfig 环境变量

>> echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
>> source ~/.bash_profile

5. 安装 flannel 网络插件

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

这里如果执行失败可以将网址里的内容保存到本地文件内再执行

6. 将 master 节点下的  /etc/cni/net.d/ 下的所有文件拷贝到 node 节点上

在 node 节点执行

>> mkdir -p /etc/cni/net.d/

在 master 上执行

>> scp /etc/cni/net.d/* root@node1:/etc/cni/net.d/

7. 验证node 与 master 节点状态

分别在 node 与 master 上执行

>> kubectl get nodes

若出现如下所示, 则 kubernetes 部署成功

5.png



小结

安装过程可能会遇到一些未知的问题,要耐心一些,大不了重头再来一遍!