当前位置: 首页 > news >正文

从零搭建 Kubernetes 1.28 高可用集群

前言

📘 一、K8s 集群部署环境准备

1.1 环境架构

1.2 配置主机名与 hosts

1.3 关闭防火墙与 SELinux

1.4 关闭 Swap 分区

1.5 配置内核参数

1.6 安装网络和系统依赖

🧱 二、安装 Containerd

2.1 安装依赖与源

2.2 加载模块

2.3 安装与配置 Containerd

2.4 启动并设置开机自启

⚙️ 三、安装 kubeadm、kubelet、kubectl

3.1 添加 Kubernetes 源

3.2 安装指定版本

🚩 四、初始化 Kubernetes 集群

4.1 生成配置文件

4.2 初始化集群

🌐 五、安装 Calico 网络插件(v3.25)

5.1 下载 YAML 文件

5.2 修改 Calico 配置

✅ 第一处(约第 4601 行)

✅ 第二处(建议添加)

5.3 应用配置

🔗 六、工作节点加入集群

⚒️ 七、kubectl 自动补全

🧰 八、安装 Nerdctl 管理工具(可选)

🖥️ 九、安装 Kubernetes Dashboard

9.1 下载 Dashboard 配置

9.2 创建管理员账户与 Token

✅ 十、总结

前言

本教程基于 CentOS 7.9 环境,使用 Containerd 作为容器运行时,Calico v3.25 作为网络插件,手动部署 Kubernetes v1.28.2 集群。 所有步骤均附详细说明与命令,并标注执行节点(Master / 所有节点 / Worker)。


📘 一、K8s 集群部署环境准备

1.1 环境架构

IP主机名系统版本Kubelet 版本用途
192.168.10.50master01CentOS 7.9v1.28.2控制节点
192.168.10.250node01CentOS 7.9v1.28.2工作节点
192.168.10.40node02CentOS 7.9v1.28.2工作节点

⚙️ 集群规划

  • 控制节点 1 台 + 工作节点 2 台

  • 网络插件:Calico

  • 容器运行时:Containerd

  • 初始化工具:kubeadm


1.2 配置主机名与 hosts

📍 执行节点:所有节点(master01、node01、node02)

# 分别在各节点执行
hostnamectl set-hostname master01   # Master 节点
hostnamectl set-hostname node01     # node01 节点
hostnamectl set-hostname node02     # node02 节点

添加主机映射:

cat >> /etc/hosts <<EOF
192.168.10.50 master01
192.168.10.250 node01
192.168.10.40 node02
EOF

1.3 关闭防火墙与 SELinux

📍 执行节点:所有节点

systemctl stop firewalld
systemctl disable firewalld
​
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

1.4 关闭 Swap 分区

📍 执行节点:所有节点

swapoff -a
sed -i '/swap/s/^/#/g' /etc/fstab

1.5 配置内核参数

📍 执行节点:所有节点

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

1.6 安装网络和系统依赖

📍 执行节点:所有节点

yum -y install conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

加载 IPVS 模块:

cat >/etc/modules-load.d/ipvs.conf <<EOF
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
nf_conntrack_ipv4
EOF
​
systemctl enable --now systemd-modules-load.service
lsmod | egrep "ip_vs|nf_conntrack_ipv4"

🧱 二、安装 Containerd

📍 执行节点:所有节点

2.1 安装依赖与源

yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.2 加载模块

cat >>/etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
​
modprobe overlay
modprobe br_netfilter

2.3 安装与配置 Containerd

yum -y install containerd.io
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

修改配置文件:

# 启用 systemd 作为 cgroup 管理驱动
sed -i '/SystemdCgroup/s/false/true/g' /etc/containerd/config.toml
​
# 替换镜像源为阿里云
sed -i '/sandbox_image/s|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml

2.4 启动并设置开机自启

systemctl enable containerd
systemctl start containerd

⚙️ 三、安装 kubeadm、kubelet、kubectl

📍 执行节点:所有节点

3.1 添加 Kubernetes 源

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

3.2 安装指定版本

yum -y install kubeadm-1.28.2 kubelet-1.28.2 kubectl-1.28.2
systemctl enable kubelet
systemctl start kubelet

🚩 四、初始化 Kubernetes 集群

📍 执行节点:Master 节点(master01)

4.1 生成配置文件

cat >/tmp/kubeadm-init.yaml <<EOF
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.28.2
controlPlaneEndpoint: 192.168.10.50:6443
imageRepository: registry.aliyuncs.com/google_containers
networking:podSubnet: 10.244.0.0/16serviceSubnet: 10.96.0.0/16
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
EOF

4.2 初始化集群

#将输出结果生成日志文件
kubeadm init --config=/tmp/kubeadm-init.yaml --ignore-preflight-errors=all | tee kubeadm-init.log

配置 kubectl 环境:

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

检查节点状态:

kubectl get nodes
kubectl get pods -A

Node 为 NotReady,因为还未安装 CNI。


🌐 五、安装 Calico 网络插件(v3.25)

📍 执行节点:Master 节点

5.1 下载 YAML 文件

wget https://docs.tigera.io/archive/v3.25/manifests/calico.yaml

5.2 修改 Calico 配置

打开文件:

vim calico.yaml
✅ 第一处(约第 4601 行)
- name: CALICO_IPV4POOL_CIDRvalue: "10.244.0.0/16"
✅ 第二处(建议添加)

指定主机网卡探测方式:

- name: IP_AUTODETECTION_METHODvalue: "interface=ens33"

若节点可访问外网,可改为:

- name: IP_AUTODETECTION_METHODvalue: "can-reach=8.8.8.8"

5.3 应用配置

kubectl apply -f calico.yaml

验证状态:

kubectl get pods -n kube-system
kubectl get nodes

全部 Running 表示网络安装成功。


🔗 六、工作节点加入集群

📍 执行节点:Worker 节点(node01、node02)

使用 Master 输出的 join 命令:

kubeadm join 192.168.10.50:6443 --token <token> \
--discovery-token-ca-cert-hash sha256:<hash值>

验证:

kubectl get nodes

⚒️ 七、kubectl 自动补全

📍 执行节点:所有节点(建议至少 Master)

yum -y install bash-completion
echo "source <(kubectl completion bash)" >> /etc/profile
source /etc/profile

🧰 八、安装 Nerdctl 管理工具(可选)

📍 执行节点:所有节点

wget -q -c https://github.com/containerd/nerdctl/releases/download/v1.7.0/nerdctl-1.7.0-linux-amd64.tar.gz
tar xf nerdctl-1.7.0-linux-amd64.tar.gz -C /usr/local/bin
nerdctl -n k8s.io ps
echo "source <(nerdctl completion bash)" >> ~/.bashrc
source ~/.bashrc

🖥️ 九、安装 Kubernetes Dashboard

📍 执行节点:Master 节点

9.1 下载 Dashboard 配置

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

修改 Service 类型为 NodePort:

#39行,手动添加内容
spec:type: NodePort (添加)ports:- port: 443targetPort: 8443nodePort: 30000 (添加)

部署:

kubectl apply -f recommended.yaml
kubectl get pod,svc -n kubernetes-dashboard

9.2 创建管理员账户与 Token

cat >dashboard-admin.yaml <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:name: adminnamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: adminnamespace: kubernetes-dashboard
EOF
​
kubectl apply -f dashboard-admin.yaml

生成 Token:

kubectl -n kubernetes-dashboard create token admin

访问:

https://<master_ip>:30000

如提示权限不足:

kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard

✅ 十、总结

模块执行节点说明
系统初始化、关闭防火墙所有节点系统安全优化
Containerd、kubelet 安装所有节点基础运行环境
kubeadm 初始化Master集群初始化
Calico 网络插件Master配置网络通信
Worker 加入集群Worker注册节点
Dashboard 控制台Master图形化界面

🎯 至此,Kubernetes v1.28.2 集群部署完成。 可使用 Dashboard 管理集群,也可继续部署 Ingress、Metrics、Prometheus 等插件。

http://www.dtcms.com/a/469954.html

相关文章:

  • 网站建设有什么岗位职责唐山广告设计制作公司
  • Apache Doris 内部数据裁剪与过滤机制的实现原理 | Deep Dive
  • 长沙百度网站建设专精特新中小企业
  • 网站上广告wordpress导出文章word
  • Voron Trident 三叉戟 组装日记
  • 南昌公司做网站网站建设湖南岚鸿建设
  • “零成本自由派”与“钉钉生态派”:斑斑与氚云的选择
  • Flutter 仿网易云音乐播放器:唱片旋转 + 歌词滚动实现记录
  • 编写Python脚本在域名过期10天内将域名信息发送到钉钉
  • Flutter 开发环境安装
  • 中科时代建设官方网站设计品牌logo
  • 【C++】模板 - - - 泛型编程的魔法模具,一键生成各类代码
  • Vue3知识详解(一)(基础知识部分)
  • 网站网页链接网站变灰色 html
  • Docker核心技术:深入理解网络模式 ——Bridge模式全栈实战与性能调优
  • Spring Web MVC构建现代Java Web应用的基石
  • 如何做tiktok的数据排行网站手机网站页面大小
  • 单片机睡眠模式详解:睡眠、停止与待机
  • 长春做网站公司哪家好做统计图的网站
  • 【Android Gradle学习笔记】第一天:认识下Gradle
  • 一级a做爰片免费网站孕交视频教程wordpress添加作者名字
  • 《基础算法递归-----汉诺塔问题》
  • 网站前台设计模板荆州网站建设 松滋网站建设
  • 【agent】AI 数字人构建8:本地edge-tts实现 tts
  • 做网站的法律贵州门户网站建设
  • 创建公司网站需要什么外贸网站系统
  • MySQL字符集与排序规则全解析
  • 在云计算环境中实施有效的数据安全策略
  • 建设电子商务网站的意义巴中市建设厅官方网站
  • DES 加密算法:核心组件、加解密流程与安全特性