-
配置主机名和hosts
配置主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3vim /etc/hosts
172.19.35.202 node1
172.19.35.203 node2
172.19.35.204 node3
测试
hostname
ping -c 3 node2 -
配置时间同步
-
关闭防火墙
systemctl disable --now firewalld
这两条命令分别用于停止并禁用防火墙(
firewalld
)和DNS服务(dnsmasq
)。 -
关闭并禁用SELinux
setenforce 0 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
以上命令会立即将SELinux设置为宽容模式,并在系统配置文件中将SELinux永久禁用。
-
关闭并禁用交换分区(swap)
swapoff -a sysctl -w vm.swappiness=0 sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
这些命令将立即关闭swap分区,设置系统不使用swap,以及在fstab文件中注释掉所有swap相关的行,防止系统重启时重新启动swap。
-
配置软件源为阿里云镜像,并安装必要软件(可选)
sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/rocky-*.repo dnf makecache yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y
以上命令用于将软件源切换到阿里云镜像,然后安装常用的一些软件工具。
-
配置Kubernetes仓库
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key EOF
设置Kubernetes软件仓库,之后可以通过此仓库安装Kubernetes相关组件。
-
安装并配置Containerd运行环境
这一部分是关于安装和配置containerd
作为 Kubernetes 的容器运行时环境-
安装 containerd(其实这里docker不需要安装)
sudo yum remove podman buildah sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum makecache sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker
这条命令通过 yum 包管理器安装 containerd。
-y
参数意味着自动同意所有询问,无需手动确认。 -
加载内核模块
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter
- 这部分创建了一个配置文件
/etc/modules-load.d/containerd.conf
,在系统启动时自动加载overlay
和br_netfilter
这两个内核模块。 overlay
模块支持 overlay 文件系统,这是 Docker 和其他容器技术常用的文件系统类型。br_netfilter
模块用于在网络桥接接口上进行包过滤和NAT功能,这对 Kubernetes 网络是必需的。
- 这部分创建了一个配置文件
-
设置网络相关的系统参数
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sudo sysctl --system
- 这些参数配置允许在网络桥接时通过 iptables 对数据包进行处理,以及启用 IP 转发。
sysctl --system
用来立即应用这些新的系统参数设置。
-
配置 containerd
sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml
- 首先创建 containerd 的配置目录。
- 然后通过
containerd config default
生成默认的配置,并保存到/etc/containerd/config.toml
文件中。
-
修改 containerd 的配置
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml sed -i 's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml sed -i 's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
- 修改配置使用
SystemdCgroup = true
,这确保 containerd 使用 systemd 管理 cgroup,有助于与 systemd 更好的集成。 - 替换镜像源地址,将默认的 Kubernetes 镜像源改为阿里云提供的镜像源,这可以提高在中国大陆的访问速度和稳定性。
- 修改配置使用
-
启动并使 containerd 自启动
systemctl daemon-reload systemctl start containerd systemctl enable --now containerd
daemon-reload
命令让 systemd 重新加载配置文件,包括新安装的服务。enable --now containerd
将 containerd 服务设置为开机自启,并立即启动服务。
这些步骤共同配置了 containerd 作为 Kubernetes 集群的容器运行时环境,确保了其与系统参数和 Kubernetes 的兼容性,同时优化了网络和镜像源设置以提高效率和响应速度。
-
-
安装Kubernetes组件并初始化集群
-
安装 Kubernetes 组件
yum install kubeadm-1.29.* kubelet-1.29.* kubectl-1.29.* -y
- 使用
yum
安装kubeadm
,kubelet
, 和kubectl
。这些组件分别用于初始化 Kubernetes 集群、运行集群的节点、和与集群交互。 - 版本
1.29.*
确保安装的是特定版本的 Kubernetes。 -y
参数自动确认安装过程中的询问。
- 使用
-
启动并设置 kubelet 自启动
systemctl enable --now kubelet
kubelet
是在每个节点上运行的核心组件,负责维护容器的生命周期。- 此命令使
kubelet
在启动时自动运行。
-
预拉取 Kubernetes 集群所需的镜像
kubeadm config images pull --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version 1.29.4
- 使用
kubeadm
的images pull
命令从指定的镜像仓库预先拉取 Kubernetes 运行所需的所有容器镜像。 - 这里使用的是阿里云的镜像仓库,以提高在中国区的下载速度和稳定性。
- 使用
-
初始化 Kubernetes 集群
kubeadm init --apiserver-advertise-address 10.0.3.233 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --cri-socket "unix:///var/run/containerd/containerd.sock" --kubernetes-version 1.29.4
kubeadm init
是用于初始化集群的主命令。--apiserver-advertise-address
指定 API 服务器将广播到其他集群成员的 IP 地址。--image-repository
为 Kubernetes 集群使用的容器镜像仓库地址。--cri-socket
指定容器运行时的接口,这里使用的是 containerd。--kubernetes-version
指定了安装的 Kubernetes 版本。
-
将节点加入到 Kubernetes 集群
kubeadm join 10.0.3.233:6443 --token cg0bkg.w83qlih44rjby2jk --discovery-token-ca-cert-hash sha256:4efd525d2708c60bd450b0bd3f22a850283738f49b23e04334301a4ca07a1a8f
- 使用
kubeadm join
将其他节点加入到已初始化的 Kubernetes 集群。 --token
是用于节点身份验证的安全令牌,保证只有拥有令牌的节点可以加入集群。--discovery-token-ca-cert-hash
是 CA 证书的哈希值,用于节点加入时验证 API 服务器的证书,增强安全性。
- 使用
-
5分钟快速搭建k8s集群1.29.x
于 2024-04-24 14:23:19 首次发布