
推荐使用脚本一键安装方式:
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/16 | node1 | K8S控制平面接点(主节点) |
192.168.2.52/16 | node2 | K8S工作节点1 |
192.168.2.53/16 | node3 | K8S工作节点2 |
环境准备:
以下需要在所有服务器上操作
1.关闭防火墙:
sudo systemctl disable --now ufw
2.关闭swap:
编辑/etc/fstab
文件,找到带swap的一行,注释掉即可:
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已经禁用
5.修改/etc/hosts
文件,添加节点并注释掉127.0.0.1那一行:
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-iptables
、net.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 /
检查安装状态:
创建配置文件目录并复制默认配置文件:
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
大概在137行位置修改 SystemdCgroup
为 true
:
启动容器:
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
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
执行结果:
主节点执行:
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结果
命令结果:
主节点执行kubectl get nodes
查看节点状态:
如果都输出Ready,则代表集群工作正常
参考文献:
在Ubuntu22.04 LTS上搭建Kubernetes集群-阿里云开发者社区 (aliyun.com)
kubernetes | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
广告:
暂无评论内容