使用kubeadm部署k8s(v1.23,基于docker)

2024-07-31

目录

主机硬件配置说明

主机名 IP 角色 CPU 内存 系统
master01 223.193.36.152 master,etcd 8C 32G CentOS 7
master02 223.193.36.155 master,etcd 8C 32G CentOS 7
node01 223.193.36.179 worker 8C 32G CentOS 7
node02 223.193.36.182 worker 8C 32G CentOS 7
harbor 223.193.36.117 repository 8C 32G CentOS 7

安装包地址

docker安装

卸载旧版本

# 1. 卸载之前安装的组件
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

设置存储库

# 1.安装yum-utils
sudo yum install -y yum-utils

# 2.设置稳定的存储库
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 下面是官网的, 上面使用阿里云的 国内比较快
#    https://download.docker.com/linux/centos/docker-ce.repo

安装最新版本的Docker引擎和容器

# 1. 直接安装最新docker版本
sudo yum -y install docker-ce docker-ce-cli containerd.io

# 2. 安装完成后查看版本
docker -v

安装指定版本

# 如果想安装不同版本
# 1.列出可用版本
yum list docker-ce --showduplicates | sort -r

# 2.安装指定版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
如:
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io

启动docker

# 启动docker
systemctl start docker

# 停止docker
systemctl stop docker

# 重启
systemctl restart docker

# 查看状态
systemctl status docker

# 设置开机自启动
systemctl enable docker

# 查看信息
docker info

# 查看帮助文档
docker --help

卸载docker(如需要)

# 1.卸载 Docker 引擎、CLI 和容器包
sudo yum remove docker-ce docker-ce-cli containerd.io

# 2.主机上的图像、容器、卷或自定义配置文件不会自动删除。要删除所有图像、容器和卷
sudo rm -rf /var/lib/docker

# 3.必须手动删除任何编辑的配置文件。

docker配置

# 给所有k8s主机配置docker
sudo nano /etc/docker/daemon.json

# 改为如下内容
{
  "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
  "insecure-registries": ["http://harbor.ifzzh.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

# 参数说明:
# "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"],
# "insecure-registries": ["http://harbor.xinjizhiwa.com"], #允许拉取自建仓库harbor仓库的镜像;
# "exec-opts": ["native.cgroupdriver=systemd"]   #kubeadm去寻找的cgroup默认是systemd,而docker不配置的话,默认是cgroupfs,不配置这个,部署k8s时会报错;



# 重启docker服务

systemctl restart docker.service

k8s 节点 Linux 环境配置

关闭swap分区

# 查看swap
free -h

# 临时关闭swap分区
swapoff -a && sysctl -w vm.swappiness=0

# 永久关闭,把fstab中swap那一行注释掉
sed -ni '/^[^#]*swap/s@^@#@p' /etc/fstab

节点网卡硬件编号验证是否冲突

# 网卡编号验证
ifconfig eth0 |grep ether |awk '{print $2}'

# 硬件编号验证
cat /sys/class/dmi/id/product_uuid

节点配置允许iptables转发桥接流量

cat > /etc/modules-load.d/k8s.conf << EOF
br_netfilter
EOF

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF

sysctl --system

关闭防火墙和SELinux

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i '7c SELINUX=disabled' /etc/selinux/config

kubeadm方式部署k8s

所有节点安装部署组件kubeadm

# 1. 配置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
EOF

# 2.查看安装源中的k8s都有什么版本?

yum -y list kubeadm --showduplicates | sort -r

# 3. yum安装组件

yum -y install kubeadm-1.23.17-0 kubelet-1.23.17-0 kubectl-1.23.17-0 

# 4. 设置开机自启动
systemctl enable --now kubelet.service

# 5. 查看状态(此时启动失败,不用管,因为还没配置完成,配置完成后自动会启动)
systemctl status kubelet.service

初始化master节点

kubeadm init --kubernetes-version=v1.23.17 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16  --service-dns-domain=ifzzh.com

# 参数释义:

--pod-network-cidr=10.100.0.0/16   #pod的网段
--service-cidr=10.200.0.0/16    #service资源的网段
--service-dns-domain=ifzzh.com  #service集群的dns解析名称