kubernetes集群部署(v1.23.5)
单master,两个node节点 k8s集群部署
1.部署拓扑
1.1服务配置及拓扑
镜像:CentOS-7-x86_64-Minimal-1908
CPU:2核
内存:2G
1.2更改主机名
//在master虚拟机上,设置master01节点
hostnamectl set-hostname master01
//立马生效
bash
//查看/etc/hostname为master01
cat /etc/hostname
//重启后永久生效
reboot
//同理在node1虚拟机上,设置node01节点
hostnamectl set-hostname node01
//立马生效
bash
//查看/etc/hostname为node01
cat /etc/hostname
//重启后永久生效
reboot
node2如node1操作
2.安装docker
//安装yum工具
yum install -y yum-utils
//卸载旧版本Docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
//安装仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//更新配置yum源后,用如下命令生成缓存,提高搜索安装软件速度
sudo yum makecache fast
//安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io -y
//启动docker
sudo systemctl start docker
//设置开机启动
sudo systemctl enable docker
sudo systemctl status docker
//新增配置文件
cat >> /etc/docker/daemon.json << EOF
{
"exec-opts":["native.cgroupdriver=systemd"]
}
EOF
//重启docker
systemctl restart docker
systemctl status docker
3.服务器配置
3.1关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3.2将SELinux设置为permissive模式(相当于将其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
3.3允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
3.4关闭系统的Swap
swapoff -a
//关闭swap分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
3.5配置/etc/hosts
//自定义master与node IP,请根据个人情况修改
cat >> /etc/hosts << EOF
192.168.186.155 master01
192.168.186.156 node01
192.168.186.157 node02
EOF
4.安装kubelet、kubeadm和 kubectl
4.1配置软件源
cat <<EOF > /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=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
//针对修改repo_gpgcheck=0
4.2安装kubelet kubeadm kubectl
在所有节点上安装kubelet、kubeadm和kubectl。
- kubelet运行在Cluster所有节点上,负责启动Pod和容器。
- kubeadm用于初始化Cluster。
- 通过kubectl可以部署和管理 应用,查看各种资源,创建、删除和更新各种组件。
sudo yum update -y
//sudo yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
//可以根据github发布版本,指定
//最新的1.24版本已经弃用docker,所以此处需指定1.23
sudo yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5
//默认最新版本
//sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
sudo systemctl start kubelet
//sudo systemctl status kubelet 此时kubelet还没有正常准备,待kubeadm init后master节点会ok,将node节点join添加后kubelet也会正常
4.3检查工具安装
yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl
//查看集群版本结果Kubernetes v1.23.5
kubelet --version
5.用kubeadm创建Cluster
5.1初始化Master
- --apiserver-advertise-address指明用Master的哪个interface与Cluster的其他节点通信。如果Master有多个interface,建议明确指定,如果不指定,kubeadm会自动选择有默认网关的interface。
- --pod-network-cidr指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同网络方案对--pod-network-cidr有自己的要求,这里设置为10.244.0.0/16是因为我们将使用flannel网络方案,必须设置成这个CIDR。在后面的实践中我们会切换到其他网络方案,比如Canal。
//apiserver-advertise-address 192.168.186.155为master节点IP,根据个人master IP修改
kubeadm init --apiserver-advertise-address 192.168.186.155 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12
补充:Kubeadm初始化报错:[ERROR CRI]: container runtime is not running
解决办法:
rm -rf /etc/containerd/config.toml
systemctl restart containerd
//如果执行失败,需重置
kubeadm reset
//配置客户端kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5.2初始化worker
//worker节点添加到集群 ---> 在worker节点node1上执行
//可以通过kubeadm token list查看token
//也可以通过如下命令一次性获取命令
kubeadm token create --print-join-command
5.3添加pod网络 calico --> master节点执行
wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml --no-check-certificate
kubectl apply -f calico.yaml
//此处应用后node状态由NotReady --> Ready
5.4控制面查看集群
kubectl get nodes
kubectl get pod -A
5.5工作负载worker节点node1查看集群
//在master01传文件到node01,其中172.168.186.156为master01节点
scp -r /etc/kubernetes/admin.conf root@172.168.186.156:/etc/kubernetes/
//在node1上执行
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
更多推荐
所有评论(0)