k8s-Kubeadm高可用集群配置(1.30.3版本部署)
本文介绍使用kubeadm工具安装Kubernetes v1.30.3集群的详细步骤。主要内容包括:环境准备(3台机器、关闭防火墙等)、内核参数优化、安装containerd容器运行时、配置Kubernetes阿里云yum源、初始化master节点(kubeadm init)、加入worker节点(kubeadm join)、安装Calico网络插件等关键流程。特别说明k8s 1.24+版本不再原
k8s-kubeadm方式安装
我们使用kubeadm的方式来安装k8s
版本:v1.30.3
kubernetes安装方式汇总*
kubeadm工具
容器引擎、kubelet:使用yum安装
其他组件:被做成镜像、kubeadm会用这些镜像启动相关组件
静态 pod: kubeadm会将这些容器做成静态pod(没有控制器管理,关掉会自动重启)
总结: 静态pod+容器引擎+kubelet=kubernetes环境
kubeadm环境准备
三台机器,内存>=2G
192.168.112.136: master
192.168.112.139: node1
192.168.112.141:node2
修改主机名,添加host解析 /etc/hosts
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
关闭防火墙、swap分区、selinux
systemctl stop firewalld
systemctl disable firewalld
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
将桥接的ipv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = ``1
net.bridge.bridge-nf-call-ip6tables = ``1
net.ipv4.ip_forward = ``1
EOF
cat >/etc/modules-load.d/k8s.conf<<EOF
overlay
br_netfilter
EOF
添加完输入生效
modprobe overlay
modprobe br_netfilter
sysctl --system
看一下集群时间是否同步
时间一定同步
同步完时间更新yum源
清理掉旧的yum源
rm -rf /etc/yum.repos.d/*
yum remove epel-release -y
rm -rf /var/cache/yum/x86_64/6/epel/
安装阿里的base和epel源
curl -s -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all ; yum makecache
更新系统软件
yum update -y --exclude=kernel*
安装基础常用的软件
yum -y install expect wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git ntpdate chrony bind-utils rsync unzip git
更新系统的内核
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.274-1.el7.elrepo.x86_64.rpm
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.274-1.el7.elrepo.x86_64.rpm
安装内核并设置默认启动(以上操作都是所有机器)
yum localinstall -y /root/kernel-lt*
设置默认启动
grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
查看内核启动版本
grubby --default-kernel
然后重启
init 6
所有节点修改内核参数
cat > /etc/sysctl.d/k8s.conf << EOF net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 fs.may_detach_mounts = 1 vm.overcommit_memory=1 vm.panic_on_oom=0 fs.inotify.max_user_watches=89100 fs.file-max=52706963 fs.nr_open=52706963 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 15 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 327680 net.ipv4.tcp_orphan_retries = 3 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.ip_conntrack_max = 65536 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_timestamps = 0 net.core.somaxconn = 16384 EOF
立即生效
sysctl --system
以上都是基础环境配置,接下来开始配置容器进行时
由于k8s1.24版本之后,不支持原生docker。containerd来自于docker,所以我们安装containerd不再安装docker
升级libseccomp
centos 7 默认的libseccomp版本为2.3.1,不满足containerd的需求需要更新下载2.4版本以上
rpm -qa | grep libseccomp
rpm -e libseccomp-2.3.1-4.el7.x86_64 --nodeps
wget https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm
rpm -ivh libseccomp-2.5.1-1.el8.x86_64.rpm
安装containerd
清理docker数据
yum remove docker docker-ce containerd docker-common docker-selinux docker-engine -y
安装yum源以及containerd*
cd /etc/yum.repos.d/ wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y containerd*
配置containerd
mkdir -p /etc/containerd
为containerd生成配置文件
containerd config default > /etc/containerd/config.toml
替换pause镜像地址
grep sandbox_image /etc/containerd/config.toml
sed -i 's/registry.k8s.io/registry.cn-hangzhou.aliyuncs.com\/google_containers/' /etc/containerd/config.toml
grep sandbox_image /etc/containerd/config.toml
配置systemd作为容器的cgroup driver
grep SystemdCgroup /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
grep SystemdCgroup /etc/containerd/config.toml
配置镜像加速
sed -i 's/config_path =.*/config_path = \"\/etc\/containerd\/certs.d\"/g' /etc/containerd/config.toml
创建镜像加速目录
mkdir -p /etc/containerd/certs.d/docker.iocat > /etc/containerd/certs.d/docker.io/hosts.toml << EOFserver = "https://docker.io"[host."https://dockerproxy.com"]capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]capabilities = ["pull", "resolve"]
[host."https://docker.agsv.top"]capabilities = ["pull", "resolve"]
[host."https://registry.docker-cn.com"]capabilities = ["pull", "resolve"]EOF
启动containerd服务并设置开机自启
systemctl daemon-reload && systemctl restart containerd
systemctl enable --now containerd
查看containerd状态
systemctl status containerd
启动成功证明安装成功失败查看具体原因
容器进行时安装完成了接下来开始配置kubernetes
准备kubernetes源
cat > /etc/yum.repos.d/kubernetes.repo << "EOF" [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key EOF
安装kubelet
yum install -y kubelet-1.30.3* kubeadm-1.30.3* kubectl-1.30.3*
设置开机自启和开机
systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet
然后创建初始化配置文件
kubeadm config print init-defaults > /etc/kubernetes/init-``default``.yaml
把配置文件修改成国内源
sed -i ``'s/registry.k8s.io/registry.aliyuncs.com\/google_containers/'
/etc/kubernetes/init-``default``.yaml
设置apiserverip地址,修改10.0.0.1为自己masterip
sed -i ``'s#1.2.3.4#10.0.0.1#' /etc/kubernetes/init-``default``.yaml
设置环境变量
cat >>/etc/profile<<EOF``export KUBECONFIG=/etc/kubernetes/admin.conf``EOF`` source /etc/profile
做完之后开始初始化
kubeadm init --image-repository registry.aliyuncs.com/google_containers --control-plane-endpoint ``"10.0.0.1:6443"``(master上的ip) --upload-certs
初始化之后三个节点要创建kube的配置文件
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown (id -g) $HOME/.kube/config
kubeadm token create --print-join-command
(示例)kubeadm join ``10.0``.``0.1``:``6443 --token XXXxxxxxx \
> --discovery-token-ca-cert-hash sha256:e04398ab10692f24b0f956fbfc0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx这是回显,把这条命令给node节点就行
然后kubelet的初始化完成了
查看你节点是否存在
kubectl get node
开始安装网络插件
可以安装calico也可以安装Flannel 都可以
这里安装calico因为他功能比较强大
从网上把配置文件拉取到本地
cd /etc/kubernetes/ && wget https:``//docs.projectcalico.org/manifests/calico.yaml
由于配置文件里是外网的需要更改国内源
ctr images pull swr.cn-north-``4``.myhuaweicloud.com/ddn-k8s/docker.io/calico/node:v3.``25.0
ctr images pull swr.cn-north-``4``.myhuaweicloud.com/ddn-k8s/docker.io/calico/cni:v3.``25.0
ctr images pull swr.cn-north-``4``.myhuaweicloud.com/ddn-k8s/docker.io/calico/kube-controllers:v3.``25.0
每个节点都要操作
可以把拉取的镜像该标签为需要的镜像然后创建pod
kubectl apply -f /etc/kubernetes/calico.yaml
拉取的配置文件需要更改国内源
这样基本的kubeadm就已经创建完成了
具体报错具体查看就行
更多推荐


所有评论(0)