目录

一、部署k8s的两种方式:

1. kubeadm

2. 二进制包

二、环境准备

机器硬件配置:

软件准备:

服务器规划:(本实验采用虚拟机)

三、初始化配置

1.安装环境配置:所有机器上操作

2.安装 Docker、kubeadm、kubelet【所有节点】

3.添加kubernetes YUM软件源

四、部署k8s-master【master执行】

kubeadm部署(需要等上一会)

五、配置k8s的node节点【node节点操作】

六、验证是否加入成功 【master上运行】


一、部署k8s的两种方式:

目前部署Kubernetes集群主要有两种方式:

1. kubeadm

Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。

2. 二进制包

从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。

这里我使用的是kubeadm的方式部署

二、环境准备

机器硬件配置:

  • 建议最小硬件配置:2核CPU、2G内存、20G硬盘
  • 服务器最好可以访问外网,会有从网上拉取镜像需求,如果服务器不能上网,需要提前下载对应镜像并导入节点

软件准备:

  • CentOS Linux release 7.9.2009 (Core)
  • Docker:20-ce
  • k8s:1.23.5(版本很重要,不然会出现问题)

服务器规划:(本实验采用虚拟机)

  • k8s-master :192.168.174.161
  • k8s-node1 :192.168.174.162
  • k8s-node2 :192.168.174.163
  • k8s-node3 :192.168.174.165

三、初始化配置

1.安装环境配置:所有机器上操作

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

# 关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

# 根据规划设置主机名
	hostnamectl set-hostname k8s-master
	hostnamectl set-hostname k8s-node1
	hostnamectl set-hostname k8s-node2
	hostnamectl set-hostname k8s-node3

# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.178.161 k8s-master
192.168.178.162 k8s-node1
192.168.178.163 k8s-node2
192.168.178.165 k8s-node3
EOF

#追加到内核会读取的参数文件里
cat <<EOF >>  /etc/sysctl.conf  
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
EOF

#让内核重新读取数据,加载生效
sysctl -p  

2.安装 Docker、kubeadm、kubelet【所有节点】

#下载docker所需源,安装docker
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


#配置 Docker使用systemd作为默认Cgroup驱动
cat <<EOF > /etc/docker/daemon.json
	{
	   "exec-opts": ["native.cgroupdriver=systemd"]
	}
	EOF

#设置docker开机自启,启动docker
systemctl enable docker && systemctl start docker

#查看docker信息,进行确认
docker info                                                        

3.添加kubernetes 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

4.安装kubeadm,kubelet和kubectl(一定要注意版本,我就是因为版本问题困扰了我很久)

#我这里指定安装版本,不指定的话会安装最新的,就可能出现版本问题导致安装失败(安装之前可以先查一下安装的docker对应支持的版本在进行安装)

yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5

#设置开机自启,因为kubelet是k8s在node节点上的代理,必须开机要运行的
systemctl enable  kubelet

四、部署k8s-master【master执行】

kubeadm部署(需要等上一会)

kubeadm init \
  --apiserver-advertise-address=192.168.178.161 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.5 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all

  • --apiserver-advertise-address 集群通告地址
  • --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  • --kubernetes-version K8s版本,与上面安装的一致
  • --service-cidr 集群内部虚拟网络,Pod统一访问入口
  • --pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致

拷贝k8s认证文件

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

至此,master就配置好了

五、配置k8s的node节点【node节点操作】

复制master配置完成后出现的kubeadm join(上图)到结尾

kubeadm join 192.168.174.161:6443 --token rc2n3z.1iwfb6ideksdasw8 \
    --discovery-token-ca-cert-hash sha256:55b3ad3fb9b0e0a37059be13439f3ca93720b98699e105f332157da77768d35b

到node节点上执行,就可以加入集群了

六、验证是否加入成功 【master上运行】

kubectl get nodes

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   3h19m   v1.23.5
k8s-node1    NotReady   <none>                 3h12m   v1.23.5
k8s-node2    NotReady   <none>                 3h7m    v1.23.5
k8s-node3    NotReady   <none>                 3h7m    v1.23.5 

出现以上效果就成功了 

参考:

部署k8s集群(k8s集群搭建详细实践版)_在路上的阿帅的博客-CSDN博客_k8s集群

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐