kubernetes|Kubernetes集群部署,基于kubeadm的快速搭建k8s集群模式。

目录
前言
一,kubeadm简介
二,节点组件介绍
1,控制节点组件
2,工作节点组件
三,部署拓扑
四,开虚拟化支持,改主机名,配IP,配域名解析,配置免密登录
1,三台节点编辑此虚拟机设置—cpu—三个复选框全勾上
2,改主机名
3,配IP地址
4,配域名解析
5,配置免密登录
二,关交换分区,修改内核参数,关闭防火墙,关闭selinux,配置yum源
1,关交换分区
2,修改内核参数,开启数据包转发
3,关闭防火墙和禁止开机自启动
4,关闭selinux,重启机器
5,配置阿里云yum源
三,安装基础软件包,安装iptables
1,安装基础软件包
2,安装iptables,禁止开机自启动
四,安装配置docker,配置docker加速,安装k8s软件包
1,安装docker
2,配置docker镜像加速
3,安装初始化k8s软件包
五,初始化k8s集群
1,导入镜像包
2,使用kubeadm初始化k8s集群
3,添加工作节点
4,安装网络插件calico
前言 注意事项:这个博客所有搭建步骤基本都可以直接复制的,如果你IP和我的一样的话,不过还是不建议直接复制粘贴,毕竟是学习嘛,还有在部署时一定要注意节点不要搞错了,否则后边有些步骤是很难逆的。
一,kubeadm简介 kubeadm是官方提供部署k8s集群的工具,为开源项目,源码在github上,源码可以看到,可以再二次开发,快速搭建集群的一种方式,官方推荐,主要通过kubectl init 和kubectl join两个命令快速搭建k8s集群,并可以实现k8s集群的扩容。
kubeadm初始化时,所有组件都是通过pod的形式运行的,可通过监控任务实现故障自恢复功能
kubeadm是一种自动化搭建的工具,通过脚本的方式帮我们搭建集群,属于自动部署,简单易学,屏蔽了很多细节,虽快,但是组件自动安装,调用对每个模块感知较少,遇到问题很难排查。
适用于经常部署,或者对自动化要求较高的情况下使用。
二,节点组件介绍 1,控制节点组件 apiserver controller-manager scheduler kubelet etcd docker kube-proxy keepalived nginx calico
2,工作节点组件 kubelet kube-proxy docker calico coredns
三,部署拓扑 三个节点,单控制,双工作
使用centos 7.6版本
node1192.168.100.30
master192.168.100.40
Node2192.168.100.50
四,开虚拟化支持,改主机名,配IP,配域名解析,配置免密登录 1,三台节点编辑此虚拟机设置—cpu—三个复选框全勾上 kubernetes|Kubernetes集群部署,基于kubeadm的快速搭建k8s集群模式。
文章图片

2,改主机名 master:

hostnamectl set-hostname master && bash

node1:
hostnamectl set-hostname node1 && bash

node2:
hostnamectl set-hostname node2 && bash

3,配IP地址 master:
vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static 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=ens33 UUID=9b050f16-c845-4870-bdd5-f2b26e65ea65 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.40 NETMASK=255.255.255.0 GATEWAY=192.168.100.2 DNS1=114.114.114.114

systemctl restart network ip a ping www.baidu.com

node1:
vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static 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=ens33 UUID=9b050f16-c845-4870-bdd5-f2b26e65ea65 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.30 NETMASK=255.255.255.0 GATEWAY=192.168.100.2 DNS1=114.114.114.114

systemctl restart network ip a ping www.baidu.com

node2:
vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static 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=ens33 UUID=9b050f16-c845-4870-bdd5-f2b26e65ea65 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.50 NETMASK=255.255.255.0 GATEWAY=192.168.100.2 DNS1=114.114.114.114

systemctl restart network ip a ping www.baidu.com

4,配域名解析 master:
vim /etc/hosts

127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.30 node1 192.168.100.40 master 192.168.100.50 node2

scp /etc/hosts root@192.168.100.30:/etc/hosts scp /etc/hosts root@192.168.100.50:/etc/hosts ping node1

5,配置免密登录 master:
ssh-keygen

ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2

node1:
ssh-keygen

ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2

node2:
ssh-keygen

ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2

二,关交换分区,修改内核参数,关闭防火墙,关闭selinux,配置yum源 1,关交换分区 master:
vim /etc/fstab

# # /etc/fstab # Created by anaconda on Wed Jan5 19:24:01 2022 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root /xfsdefaults0 0 UUID=2ee72c81-de7c-40bb-a058-0c08a718c73c /bootxfsdefaults0 0 /dev/mapper/centos-home /homexfsdefaults0 0 #/dev/mapper/centos-swap swapswapdefaults0 0

scp /etc/fstab root@192.168.100.30:/etc/fstab scp /etc/fstab root@192.168.100.50:/etc/fstab

2,修改内核参数,开启数据包转发 master:
modprobe br_netfilter lsmod | grep br_netfilter

vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1

sysctl -p /etc/sysctl.d/k8s.conf scp /etc/sysctl.d/k8s.conf root@192.168.100.30:/etc/sysctl.d/k8s.conf scp /etc/sysctl.d/k8s.conf root@192.168.100.50:/etc/sysctl.d/k8s.conf

node1:
sysctl -p /etc/sysctl.d/k8s.conf

node2:
sysctl -p /etc/sysctl.d/k8s.conf

3,关闭防火墙和禁止开机自启动 master:
systemctl stop firewalld && systemctl disable firewalld systemctl status firewalld

node1:
systemctl stop firewalld && systemctl disable firewalld systemctl status firewalld

node2:
systemctl stop firewalld && systemctl disable firewalld systemctl status firewalld

4,关闭selinux,重启机器 master:
vim /etc/selinux/config

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #enforcing - SELinux security policy is enforced. #permissive - SELinux prints warnings instead of enforcing. #disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: #targeted - Targeted processes are protected, #minimum - Modification of targeted policy. Only selected processes are protected. #mls - Multi Level Security protection. SELINUXTYPE=targeted

scp /etc/selinux/config root@192.168.100.30:/etc/selinux/config scp /etc/selinux/config root@192.168.100.50:/etc/selinux/config init 6

node1:
init 6

node2:
init 6

5,配置阿里云yum源 master:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo yum makecache yum makecache fast service docker startcat < /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 yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 systemctl enable kubelet && systemctl start kubeletyum -y install ntpdate ntpdate cn.pool.ntp.org

node1:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo yum makecache yum makecache fast service docker startcat < /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 yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 systemctl enable kubelet && systemctl start kubeletyum -y install ntpdate ntpdate cn.pool.ntp.org

node2:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo yum makecache yum makecache fast service docker startcat < /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 EOFyum -y install ntpdate ntpdate cn.pool.ntp.org

三,安装基础软件包,安装iptables 1,安装基础软件包 maser:
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

node1:
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

node2:
yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

2,安装iptables,禁止开机自启动 master:
yum -y install iptables-services systemctl stop iptables && ststemctl disable iptables

node1:
yum -y install iptables-services systemctl stop iptables && ststemctl disable iptables

node2:
yum -y install iptables-services systemctl stop iptables && ststemctl disable iptables

四,安装配置docker,配置docker加速,安装k8s软件包 1,安装docker 【kubernetes|Kubernetes集群部署,基于kubeadm的快速搭建k8s集群模式。】master:
yum -y install docker-ce docker-ce-cli containerd.io systemctl restart docker && systemctl enable docker && systemctl status docker

node1:
yum -y install docker-ce docker-ce-cli containerd.io systemctl restart docker && systemctl enable docker && systemctl status docker

node2:
yum -y install docker-ce docker-ce-cli containerd.io systemctl restart docker && systemctl enable docker && systemctl status docker

2,配置docker镜像加速 master:
vim /etc/docker/daemon.json

{ “registry-mirrors”:[“https://rsbud4vc.mirror.aliyuncs.com”], “exec-opts”: [“native.cgroupdriver=systemd”] }

systemctl daemon-reload && systemctl restart docker scp /etc/docker/daemon.json root@192.168.100.30:/etc/docker/daemon.json scp /etc/docker/daemon.json root@192.168.100.50:/etc/docker/daemon.json

node1:
systemctl daemon-reload && systemctl restart docker

node2:
systemctl daemon-reload && systemctl restart docker

3,安装初始化k8s软件包 master:
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 systemctl enable kubelet && systemctl start kubelet

node1:
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 systemctl enable kubelet && systemctl start kubelet

node2:
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 systemctl enable kubelet && systemctl start kubelet

五,初始化k8s集群 1,导入镜像包 链接:https://pan.baidu.com/s/1RiXNhjWrq41VoqA60ARM4A?pwd=wqdj
提取码:wqdj
将k8simage.tar.gz上传到三个节点
master:
docker load -I k8simage.tar.gz

node1:
docker load -I k8simage.tar.gz

node2:
docker load -I k8simage.tar.gz

2,使用kubeadm初始化k8s集群 master:
kubeadm init --kubernetes-version=1.20.6 --apiserveradvertise-address=192.168.100.40 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.220.0.0/16 --ignore-preflight-errors=SystemVerification mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config. kubeadm token create --print-join-command

3,添加工作节点 node1:
复制join命令,执行
node2:
复制join命令,执行
master:
看到如下情况为正确 [root@master manifests]# kubectl get nodes NAMESTATUSROLESAGEVERSION masterNotReadycontrol-plane,master25mv1.20.6 node1NotReady20sv1.20.6 node2NotReady14sv1.20.6

4,安装网络插件calico 链接:https://pan.baidu.com/s/1RiXNhjWrq41VoqA60ARM4A?pwd=wqdj
提取码:wqdj
导入calico.yaml
master:
kubectl apply -f calico.yaml

看到如下为成功 [root@master manifests]# kubectl get nodes NAMESTATUSROLESAGEVERSION masterReadycontrol-plane,master25mv1.20.6 node1Ready20sv1.20.6 node2Ready14sv1.20.6

至此,基于kubeadm的快速部署k8s集群完成。感谢大家阅读,欢迎学习,转发,评论。

    推荐阅读