二、Kubernetes 环境搭建

一、环境介绍;

  •       本次Kubernetes的环境搭建采用的是一主多从(一个Master管理节点和三个Node工作节点)的集群类型;
节点类型镜像版本IP地址
MasterRocky Linux:9.5172.16.52.71
Node1Rocky Linux:9.5172.16.52.72
Node2Rocky Linux:9.5172.16.52.73

        如果采用的是kubeadm,容器运行时是containerd,cni用的是calico的话请跳转下面链接

Kubernetes 环境搭建-优快云博客

二、环境搭建;

1.Docker安装;

                (这里不在详细说明具体的请跳转:CentOS · Docker -- 从入门到实践

2.Kubernetes集群初始化(以下操作三个节点均要执行);

        (1)所有节点编辑hosts文件;

[root@master ~]# vim /etc/hosts
172.16.52.71 master
172.16.52.72 node1
172.16.52.73 node2

注:这里我们使用Ping节点的名字功能测试是否配置成功;

        (2)所有节点设置集群时间,保证三个节点的时区统一;

#启动chronyd服务和#保持服务开机自启

[root@master ~]#systemctl start chronyd && systemctl enable chronyd

#更新系统

[root@master ~]#sudo yum update -y

        (3)安装常用工具;

[root@master ~]#sudo yum install -y curl wget vim tar

注:这里防止我们后面vim、curl等操作时没有工具,可以自行选择忽略;

        (4)禁用SELinux(测试环境建议关闭,生产环境按需配置)和防火墙;

# 禁用SELinux

[root@master ~]#sudo setenforce 0 #临时关闭SELinux

[root@master ~]#sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config #永久关闭SELinux

# 关闭防火墙

[root@master ~]#sudo systemctl stop firewalld && sudo systemctl disable firewalld

        (5)禁用Swap;

# 禁用Swap

[root@master ~]#sudo swapoff -a # 临时禁用 swap

[root@master ~]#sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 永久禁用 swap


# 验证swap是否禁用成功,下面为swap关闭成功的状态;

[root@master ~]#free -h
               total        used        free      shared  buff/cache   available
Mem:           3.6Gi       972Mi       219Mi        15Mi       2.7Gi       2.6Gi
Swap:             0B          0B          0B

        (6)配置网络与内核参数;

# 加载内核模块
[root@master ~]#sudo modprobe br_netfilter && sudo modprobe overlay


# 确保模块持久化
[root@master ~]#cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOF

# 配置 sysctl 参数
[root@master ~]#cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用配置
[root@master ~]#sudo sysctl --system

        (7)配置cgroup;

# 配置systemd cgroup 驱动

[root@master ~]# sudo mkdir -p /etc/docker

[root@master ~]# cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF

        (8)安装配置cri-dockerd 服务 ;可以尝试使用container,原理差不多

# 安装 cri-dockerd(Kubernetes 1.24+ 需要)

[root@master ~]# wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4.amd64.tgz

[root@master ~]# tar -xvf cri-dockerd-0.3.4.amd64.tgz

[root@master ~]# sudo cp cri-dockerd/cri-dockerd /usr/local/bin/


# 配置 cri-dockerd 服务

[root@master ~]# cat <<EOF | sudo tee /etc/systemd/system/cri-docker.service

[Unit]
Description=CRI Interface for Docker
After=network-online.target docker.service
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
Restart=always
RestartSec=2s

[Install]
WantedBy=multi-user.target
EOF

# 启动 cri-dockerd

[root@master ~]# sudo systemctl daemon-reload

[root@master ~]# sudo systemctl enable --now cri-docker

        (9)安装 Kubernetes 组件;

# 添加 Kubernetes 仓库、

[root@master ~]# cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo

[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

# 安装 kubeadm、kubelet、kubectl

[root@master ~]# sudo yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0 --disableexcludes=kubernetes

# 启动 kubelet

[root@master ~]# sudo systemctl enable --now kubelet

2.Kubernetes集群,初始化Master节点,将Node加入Master;        

        (1)初始化master节点;(只在Master节点运行)

# 初始化 Master 节点
[root@master ~]# sudo kubeadm init \
  --kubernetes-version=v1.28.0 \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12 \
  --apiserver-advertise-address=172.16.52.71 \
  --image-repository=registry.aliyuncs.com/google_containers \
  --cri-socket=unix:///var/run/cri-dockerd.sock # 如果使用 Docker + cri-dockerd
  # --cri-socket=unix:///var/run/containerd/containerd.sock  # 如果使用 containerd

# 配置 kubectl
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

        (2)将Node节点加入Master;(在Node节点上执行)

#添加node节点

[root@master ~]# sudo kubeadm join 172.16.52.71:6443 \
  --token 5qweit.2ayuwld6a08y69hz \
  --discovery-token-ca-cert-hash sha256:df34c9b4432460c8ddedfc15a3c0845e525304490eba4269c9f734d4da240f91 \
  #这里可能添加失败,因为我们使用的是cri-docker,所以需要指定cri,如果需要指定,上一行末尾需要加上一个\ ;
  --cri-socket=unix:///var/run/cri-dockerd.sock

        (3)安装网络插件;(加入节点后只在Master节点执行)

#安装fannel网络插件

[root@master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#如果github拉不下来可以使用国内镜像源 
# wget https://cdn.jsdelivr.net/gh/coreos/flannel@master/Documentation/kube-flannel.yml

#使用配置文件启动fannel

[root@master ~]# kubectl apply -f kube-flannel.yml

#查看fannel是否安装成功(都是Ready状态为安装成功)

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES           AGE     VERSION
master   Ready    control-plane   12m     v1.28.0
node1    Ready    <none>          10m     v1.28.0
node2    Ready    <none>          9m58s   v1.28.0

#这里以安装fannel为例,calico安装同理
#在master节点上执行,复制输出结果到node节点上执行

kubeadm token create --print-join-command

#如果我们想在Node工作节点上也执行kubectl命令的话,我们需要将Master节点的配置文件复制到Node上去

scp -r Home/.kube node1:Home/

        这样我们的Kubernetes集群就部署成功了,如果大家遇到什么问题可以在评论区补充,我会把解决办法重新更新到文档之中!如果文档中有错误欢迎指正!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值