欢迎光临
我们一直在努力

K8S(二)—— K8S 1.28 集群部署指南(kubeadm 方式)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、K8s 集群部署环境准备(所有节点
    • 1.1 环境架构
    • 1.2 配置主机名与主机映射
    • 1.3 关闭防火墙和selinux+关闭 Swap 分区
    • 1.4配置内核参数(网络优化)
    • 1.5安装ipset、ipvsadm
    • 1.7 安装 Containerd(容器运行时)
      • 1.7.1 安装 Containerd 依赖+添加阿里 Docker 源(加速 Containerd 下载)+Containerd
  • 二、安装 kubectl、kubelet、kubeadm(三个节点)
    • 2.1 添加阿里 Kubernetes 源(加速组件下载)
  • 三、部署 Kubernetes 集群
      • 3.1.1 查看初始化所需镜像
      • 3.1.2
      • 3.1.3
    • //设定kubectl
    • //如果 kubectl get cs 发现集群不健康,更改以下两个文件
    • //所有节点部署网络插件flannel
    • //在 node 节点上执行 kubeadm join 命令加入群集
    • //在master节点查看节点状态
    • //测试 pod 资源创建
    • 暴露端口提供服务
    • //扩展3个副本
  • 四、部署 Dashboard
    • 创建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 配置主机名与主机映射

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 分区

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭 Swap 分区 K8s 要求关闭 Swap 分区,以确保节点内存资源能被准确调度(避免容器使用 Swap 导致性能下降):

# 临时关闭 Swap(当前会话生效)
swapoff -a
# 永久关闭 Swap(注释 Swap 挂载项,重启后生效)
sed -i '/swap/s/^/#/g' /etc/fstab

1.4配置内核参数(网络优化)

K8s 依赖特定内核参数实现网络转发、网桥过滤等功能,需手动配置并加载:

# 创建内核参数配置文件
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 性能更优(支持更多负载均衡算法、更低延迟),需安装相关工具并加载内核模块:

# 安装依赖工具
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"

在这里插入图片描述

#加载 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

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

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

在这里插入图片描述

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 源(加速组件下载)

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

systemctl enable kubelet.service

#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

三、部署 Kubernetes 集群

3.1.1 查看初始化所需镜像

K8s 初始化需拉取多个核心镜像(如 APIServer、etcd),先确认镜像列表:

kubeadm config images list

3.1.2

在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录 批量加载当前目录下所有 .tar 后缀的 Docker 镜像包到本地 Docker 镜像库

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” 的路径进行加载。

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

//如果 kubectl get cs 发现集群不健康,更改以下两个文件

在这里插入图片描述

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 命令加入群集

kubeadm join 192.168.10.19:6443 –token rc0kfs.a1sfe3gl4dvopck5 \\
–discovery-token-ca-cert-hash sha256:864fe553c812df2af262b406b707db68b0fd450dc08b34efb73dd5a4771d37a2

//在master节点查看节点状态

kubectl get nodes 在这里插入图片描述

//测试 pod 资源创建

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管理员集群角色

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin –clusterrole=cluster-admin –serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

在这里插入图片描述

总结

k8s部署流程 1、服务器规划: 几台服务器、资源多少(核数、内存)、安装的软件服务 docker、kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11、flannel 2、系统设置: 关闭firewalld、iptables、swap 加载ip_vs、 修改主机名、调整内核参数 3、部署docker: docker-ce-20.10.18 配置加速器 重新加载文件,重启docker 4、部署kubeadm,kubelet和kubectl 配置yum源 kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11 5、master主节点配置 1)导入k8s所需镜像 2)修改kubeadm-config.yaml文件 ip、podSubnet、kubernetes版本号 apiVersion: kubeproxy.config.k8s.io/v1alpha1 配置遵循的 API 版本和类型 kind: KubeProxyConfiguration 告知 Kubernetes 集群,这份配置文件是专用于 kube-proxy 组件的配置 mode: ipvs:流量代理模式设置为 IPVS 模式。基于 Linux IPVS 实现 Service 负载均衡,比默认的 iptables 模式更高效 3)配置kubectl的API server认证及授 4)修改scheduler、controller-manager配置文件的ip,注释端口–port=0 6、部署flannel 导入镜像 加载kube-flannel.yml 文件 获取token,给node节点执行,加入k8s集群。cat kubeadm-init.log

7、部署Dashboard apply -f 加载 recommended.yaml文件 创建service account并绑定默认cluster-admin管理员集群角色 获取token 火狐浏览器访问

赞(0)
未经允许不得转载:171主机测评 » K8S(二)—— K8S 1.28 集群部署指南(kubeadm 方式)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址