提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- [一、K8s 集群部署环境准备(所有节点](#一、K8s 集群部署环境准备(所有节点)
-
- [1.1 环境架构](#1.1 环境架构)
- [1.2 配置主机名与主机映射](#1.2 配置主机名与主机映射)
- [1.3 关闭防火墙和selinux+关闭 Swap 分区](#1.3 关闭防火墙和selinux+关闭 Swap 分区)
- 1.4配置内核参数(网络优化)
- 1.5安装ipset、ipvsadm
- [1.7 安装 Containerd(容器运行时)](#1.7 安装 Containerd(容器运行时))
-
- [1.7.1 安装 Containerd 依赖+添加阿里 Docker 源(加速 Containerd 下载)+Containerd](#1.7.1 安装 Containerd 依赖+添加阿里 Docker 源(加速 Containerd 下载)+Containerd)
- [二、安装 kubectl、kubelet、kubeadm(三个节点)](#二、安装 kubectl、kubelet、kubeadm(三个节点))
-
- [2.1 添加阿里 Kubernetes 源(加速组件下载)](#2.1 添加阿里 Kubernetes 源(加速组件下载))
- [三、部署 Kubernetes 集群](#三、部署 Kubernetes 集群)
-
- //设定kubectl
- [//如果 kubectl get cs 发现集群不健康,更改以下两个文件](#//如果 kubectl get cs 发现集群不健康,更改以下两个文件)
- //所有节点部署网络插件flannel
- [//在 node 节点上执行 kubeadm join 命令加入群集](#//在 node 节点上执行 kubeadm join 命令加入群集)
- //在master节点查看节点状态
- [//测试 pod 资源创建](#//测试 pod 资源创建)
- 暴露端口提供服务
- //扩展3个副本
- [四、部署 Dashboard](#四、部署 Dashboard)
-
- [创建service account并绑定默认cluster-admin管理员集群角色](#创建service account并绑定默认cluster-admin管理员集群角色)
- 总结
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、K8s 集群部署环境准备(所有节点
1.1 环境架构
本次部署采用「1 主 2 从」架构,节点角色、IP、系统版本等信息如下表所示:
以下是格式化后的表格:
| IP 地址 | 主机名 | 操作系统 | Kubelet 版本 | 节点角色 | 核心作用 |
|---|---|---|---|---|---|
| 192.168.10.55 | master01 | CentOS 7.9.2009 | v1.28.2 | 管理节点 | 集群控制平面(APIServer、etcd 等) |
| 192.168.10.51 | node01 | CentOS 7.9.2009 | v1.28.2 | 工作节点 | 运行容器化应用(Pod) |
| 192.168.10.52 | node02 | CentOS 7.9.2009 | v1.28.2 | 工作节点 | 运行容器化应用(Pod) |
表格采用标准的 Markdown 语法,包含表头和数据行,各列对齐清晰,便于阅读和后续处理。
I
1.2 配置主机名与主机映射
bash
hostnamectl set-hostname master01
hostnamectl set-hostname node01
hostnamectl set-hostname node02
# 配置主机映射
cat >>/etc/hosts <<EOF
192.168.10.55 master01
192.168.10.51 node01
192.168.10.52 node02
EOF
1.3 关闭防火墙和selinux+关闭 Swap 分区
bash
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
关闭 Swap 分区
K8s 要求关闭 Swap 分区,以确保节点内存资源能被准确调度(避免容器使用 Swap 导致性能下降):
bash
# 临时关闭 Swap(当前会话生效)
swapoff -a
# 永久关闭 Swap(注释 Swap 挂载项,重启后生效)
sed -i '/swap/s/^/#/g' /etc/fstab
1.4配置内核参数(网络优化)
K8s 依赖特定内核参数实现网络转发、网桥过滤等功能,需手动配置并加载:
bash
# 创建内核参数配置文件
cat > /etc/sysctl.d/k8s.conf << EOF
# 开启网桥的 IPv6 流量转发
net.bridge.bridge-nf-call-ip6tables = 1
# 开启网桥的 IPv4 流量转发
net.bridge.bridge-nf-call-iptables = 1
# 开启 IPv4 流量转发(支持 Pod 跨节点通信)
net.ipv4.ip_forward = 1
EOF
=================================================================
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.5安装ipset、ipvsadm
K8s 支持 iptables 和 ipvs 两种服务发现模式,ipvs 性能更优(支持更多负载均衡算法、更低延迟),需安装相关工具并加载内核模块:
bash
# 安装依赖工具
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
# 加载 IPVS 核心模块
ip_vs
# IPVS 轮询调度算法
ip_vs_rr
# IPVS 加权轮询调度算法
ip_vs_wrr
# IPVS 源哈希调度算法
ip_vs_sh
# 连接跟踪模块(支持会话保持)
nf_conntrack
# IPv4 连接跟踪模块
nf_conntrack_ipv4
EOF
================================================================
cat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
nf_conntrack_ipv4
EOF
================================================================
# 立即加载模块并设置开机启动
# 1. 确保服务开机自启
systemctl enable systemd-modules-load.service
# 2. 重启服务使当前配置生效
systemctl restart systemd-modules-load.service
# 验证模块加载成功(出现 ip_vs 和 nf_conntrack_ipv4 相关输出即正常)
lsmod | egrep "ip_vs|nf_conntrack_ipv4"

bash
#加载 ip_vs 模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
1.7 安装 Containerd(容器运行时)
1.7.1 安装 Containerd 依赖+添加阿里 Docker 源(加速 Containerd 下载)+Containerd
bash
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
bash
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF

bash
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
docker info | grep "Cgroup Driver"
Cgroup Driver: systemd
二、安装 kubectl、kubelet、kubeadm(三个节点)
kubeadm 是 K8s 集群初始化工具,kubelet 是节点上的核心组件(管理 Pod 生命周期),kubectl 是 K8s 命令行客户端,需在所有节点安装。
2.1 添加阿里 Kubernetes 源(加速组件下载)
bash
K8s 官方源在国内访问较慢,使用阿里源替代:
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
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
/开机自启kubelet
bash
systemctl enable kubelet.service
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启
三、部署 Kubernetes 集群
3.1.1 查看初始化所需镜像
K8s 初始化需拉取多个核心镜像(如 APIServer、etcd),先确认镜像列表:
bash
kubeadm config images list
3.1.2
在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录
批量加载当前目录下所有 .tar 后缀的 Docker 镜像包到本地 Docker 镜像库
bash
unzip v1.20.11.zip -d /opt/k8s
cd /opt/k8s/v1.20.11
for i in $(ls *.tar); do docker load -i $i; done

3.1.3
//复制镜像和脚本到 node 节点,并在 node 节点上执行脚本加载镜像文件
scp -r /opt/k8s root@node01:/opt
scp -r /opt/k8s root@node02:/opt
初始化kubeadm

kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log



//设定kubectl
kubectl需经由API server认证及授权后方能执行相应的管理操作,kubeadm 部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf,它可由 kubectl 通过默认的 "$HOME/.kube/config" 的路径进行加载。
bash
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
//如果 kubectl get cs 发现集群不健康,更改以下两个文件

bash
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
# 修改如下内容
把--bind-address=127.0.0.1变成--bind-address=192.168.10.19 #修改成k8s的控制节点master01的ip
把httpGet:字段下的hosts由127.0.0.1变成192.168.10.19(有两处)
#- --port=0 # 搜索port=0,把这一行注释掉

systemctl restart kubelet


//所有节点部署网络插件flannel
方法一:
//所有节点上传flannel镜像 flannel.tar 到 /opt 目录,master节点上传 kube-flannel.yml 文件
cd /opt
docker load < flannel.tar
//在 master 节点创建 flannel 资源
kubectl apply -f kube-flannel.yml


//在 node 节点上执行 kubeadm join 命令加入群集
bash
kubeadm join 192.168.10.19:6443 --token rc0kfs.a1sfe3gl4dvopck5 \
--discovery-token-ca-cert-hash sha256:864fe553c812df2af262b406b707db68b0fd450dc08b34efb73dd5a4771d37a2
//在master节点查看节点状态
kubectl get nodes

//测试 pod 资源创建
bash
kubectl create deployment nginx --image=nginx
kubectl get pods -o wide

暴露端口提供服务
kubectl expose deployment nginx --port=80 --type=NodePort


nginx端口映射到30727
//扩展3个副本
kubectl scale deployment nginx --replicas=3

四、部署 Dashboard
(可视化工具)rancher




创建service account并绑定默认cluster-admin管理员集群角色
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。