使用Ubuntu搭建Kubernetes集群(包含部署脚本)

推荐使用脚本一键安装方式:

bash -c "$(curl -fsSLk https://gitee.com/szsk/KubeInstaller/raw/master/kubernetes.sh)"

环境介绍:

容器:containerd

主机与IP地址(所有主机配置为2核2g,系统均为Ubuntu 22.04  LTS):

IP地址主机名字用途
192.168.2.50/16node1K8S控制平面接点(主节点)
192.168.2.52/16node2K8S工作节点1
192.168.2.53/16node3K8S工作节点2

环境准备:

以下需要在所有服务器上操作

1.关闭防火墙:

sudo systemctl disable --now ufw

2.关闭swap:

编辑/etc/fstab文件,找到带swap的一行,注释掉即可:

20240922104946383-image

3.设置服务器时区:

# 设置为亚洲的上海时区
sudo timedatectl set-timezone Asia/Shanghai
# 重启时间同步服务
sudo systemctl restart systemd-timesyncd.service
# 确保时间同步服务正常运行
timedatectl status

4.关闭SELinux:

# 安装policycoreutils软件包
sudo apt install -y policycoreutils
# 检查selinux关闭状态
sestatus

输出以下内容,代表SELinux已经禁用

20240922105141939-image

5.修改/etc/hosts文件,添加节点并注释掉127.0.0.1那一行:

20240922105259147-image

6.转发 IPv4 并让 iptables 看到桥接流量:

cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | 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

# 应用 sysctl 参数而不重新启动
sysctl --system

通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:

lsmod | grep br_netfilter
lsmod | grep overlay

通过运行以下指令确认 net.bridge.bridge-nf-call-iptablesnet.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

安装步骤:

以下需要在所有服务器上操作

1.安装containerd容器:

下载容器程序并解压(已经为中国用户添加镜像代理):

curl -LO https://mirror.ghproxy.com/github.com/containerd/containerd/releases/download/v1.7.13/cri-containerd-cni-1.7.13-linux-amd64.tar.gz && tar -zxvf cri-containerd-cni-1.7.13-linux-amd64.tar.gz -C /

检查安装状态:

20240922105841813-image

创建配置文件目录并复制默认配置文件:

mkdir /etc/containerd && containerd config default | tee /etc/containerd/config.toml

编辑文件/etc/containerd/config.toml

大概在65行位置修改 sandbox_image 值为 registry.aliyuncs.com/google_containers/pause:3.9

20240922110206282-image

大概在137行位置修改 SystemdCgroup 为 true

20240922110345862-image

启动容器:

systemctl enable --now containerd

2.安装Kubernetes:

首先导入GPG Key密钥:

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

新建 /etc/apt/sources.list.d/kubernetes.list,内容为:

deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/kubernetes/core:/stable:/v1.28/deb/ /

更新APT软件包管理器索引并安装Kubernetes:

apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

通过下面命令,查看安装状态:

kubeadm version

20240922110849437-image

3.创建集群:

在主节点拉取镜像:

kubeadm config images pull \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=替换为上面命令输出的GitVersion \
--cri-socket=unix:///run/containerd/containerd.sock

初始化集群:

kubeadm init \
--apiserver-advertise-address=主节点IP地址 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=替换为kubesdm version输出的版本 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock

执行结果:

20240922111953264-image

主节点执行:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

此命令需要在从服务器上操作

然后在所有从节点上执行这行命令:

kubeadm join 主节点IP地址:6443 --token 你的Token\
	--discovery-token-ca-cert-hash sha256:sha256结果

命令结果:

20240922112238704-image

主节点执行kubectl get nodes查看节点状态:

如果都输出Ready,则代表集群工作正常

20240922112350128-image

参考文献:

在Ubuntu22.04 LTS上搭建Kubernetes集群-阿里云开发者社区 (aliyun.com)

kubernetes | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror


广告:

© 版权声明
THE END
喜欢就支持一下吧
点赞9分享
评论 抢沙发

请登录后发表评论

    暂无评论内容