【K8S】通过官方 kubeadm 快速搭建 Kubernetes 集群

文章目录

  • 1、环境准备
  • 2、搭建流程
    • 2.1、初始化配置
    • 2.2、安装 Docker
    • 2.3、部署 K8S

1、环境准备

针对本次K8S集群搭建环境,可以使用虚拟机,不过这里我直接模拟真实生产线上环境,忍痛购买了3台阿里云ECS服务器,服务器信息如下:

  • 主节点 k8s-master:4核8G、40GB硬盘、CentOS7.9(内网IP:172.21.180.114)
  • 从节点 k8s-node1: 4核8G、40GB硬盘、CentOS7.9(内网IP:172.21.180.115)
  • 从节点 k8s-node2: 4核8G、40GB硬盘、CentOS7.9(内网IP:172.21.180.116)

本次搭建只需要这三台服务器即可,个人亲测搭建成功

2、搭建流程

2.1 章节每步操作需要 3 台服务器都执行

2.1、初始化配置

首先,3台服务器都需要关闭Selinux、Swap:

# 关闭 Selinux:防止服务可能无法启动(企业中基本上都会选择关闭)
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0# 关闭 Swap:防止 kubelet 组件无法启动
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab 

3台服务器,分别规划设置主机名:

# 主服务器(bash显示主机名)
hostnamectl set-hostname k8s-master
bash# 从服务器1(bash显示主机名)
hostnamectl set-hostname k8s-node1
bash# 从服务器2(bash显示主机名)
hostnamectl set-hostname k8s-node2
bash

3台服务器,确保网络桥接的数据包经过Iptables处理,启用相关的内核参数:

# 访问网络插件丢包
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF# 生效配置
sysctl --system

2.2、安装 Docker

2.2 章节每步操作需要 3 台服务器都执行

首先配置阿里YUM镜像源,否则下载很慢:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

器通过 YUM 安装 Docker 最新版本(大概需要3min,稍安勿躁):

yum -y install docker-ce

启动Docker,并设置为开机启动:

systemctl enable docker && systemctl start docker

配置 Docker 镜像加速器和设置 Cgroup 驱动:

# 配置加速器
cat > /etc/docker/daemon.json << EOF{"registry-mirrors": ["https://8er86g8v.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]}
EOF# 重启 Docker
systemctl restart docker

安装 cri-dockerd(Docker与Kubernetes通信的中间程序):

# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm# 安装
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm

指定 cri-docker 依赖镜像地址为国内镜像地址:

# 修改配置
vim /usr/lib/systemd/system/cri-docker.service

将 ExecStart 配置改成下述这样:

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

在这里插入图片描述

重新加载 cri-docker 配置:

systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker

2.3、部署 K8S

在3台服务器上,都添加 YUM 源仓库:

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

在3台服务器上,都安装 kubeadm、kubelet、kubectl

# 安装工具
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0# 设置开机自启
systemctl enable kubelet

在 Master 节点上,进行初始化操作:

# apiserver-advertise-address 设置为主机内网ip地址
kubeadm init \--apiserver-advertise-address=172.21.180.114 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.28.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket=unix:///var/run/cri-dockerd.sock

出现下述输出,说明安装完成:
在这里插入图片描述

按照控制台输出提示,在 Master 节点中执行上述图片中的命令:

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

接下来,将控制台中第二条命令在其他 Worker 节点中执行(并且指定一下socket):

# 尾部记得指定 socket,不要直接CV控制台!
# 如果不小心把 kubeadm join 命令清屏了,使用:kubeadm token create --print-join-command 重新生成
kubeadm join 172.21.180.114:6443 --token sf6stj.wbahjfh3kt33bgmx --discovery-token-ca-cert-hash sha256:9b10f3f5c6e624072db70985cc53924b122abd090b8a55b2bc7f497aa7477467 --cri-socket=unix:///var/run/cri-dockerd.sock

在 Master 节点上通过kubectl get nodes可以看到状态是不正常的,这是因为没有下载网络插件进行通信:
在这里插入图片描述
此时需要 Master 节点安装 Calico 网络插件,通过下述命令进行下载 calico.yaml 文件:

# 下载 calico.yaml 文件
cd ~
wget https://xuzhibin-bucket.oss-cn-beijing.aliyuncs.com/k8s/calico.yaml

下载完毕后,修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改成上面 pod-network-cidr 的值:10.244.0.0/16,如下所示:
在这里插入图片描述

修改完毕后,Master 启动配置文件:

kubectl apply -f calico.yaml

等待3分钟后,查看 Pod 运行状态,发现 pods 全部状态为 Running 成功,这样就说明 k8s 集群部署完毕了!:

kubectl get pods -A -o wide

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker配置阿里云加速器(2续)

默认情况下镜像是从docker hub下载,由于docker hub服务器在国外,由于网络原因镜像下载速度较慢,一般会配置镜像加速进行下载 国内镜像加速器有阿里云、网易云、中科大等,本章配置阿里云镜像加速器,速度较快 镜像加速源 镜像加速器 镜像加速器地址 <

决定罗德岛州(Rhode Island)版图的关键历史事件

决定罗德岛州&#xff08;Rhode Island&#xff09;版图的关键历史事件&#xff1a; 1. 早期探索与定居&#xff1a;罗德岛州的早期历史与英国*民者有关&#xff0c;特别是宗教难民的定居。1636年&#xff0c;为了逃避马萨诸塞湾*民地的宗教迫害&#xff0c;罗杰威廉姆斯建立了…

可以聊天的ai软件有实用的吗?分享3个智能的软件!

在数字化浪潮席卷而来的今天&#xff0c;人工智能&#xff08;AI&#xff09;技术已经深入我们生活的方方面面&#xff0c;其中AI聊天软件以其独特的交互方式和智能化的对话体验&#xff0c;吸引了众多用户的关注。本文将为您盘点当前市场上热门的AI聊天软件&#xff0c;带您领…

MCK主机加固在防漏扫中的关键作用

在当今这个信息化飞速发展的时代&#xff0c;网络安全成为了企业不可忽视的重要议题。漏洞扫描&#xff0c;简称漏扫&#xff0c;是一种旨在发现计算机系统、网络或应用程序中潜在安全漏洞的技术手段。通过自动化工具&#xff0c;漏扫能够识别出系统中存在的已知漏洞&#xff0…

PyCharm QThread 设置断点不起作用

背景&#xff1a; 端午节回来上班第一天&#xff0c;不想干活&#xff0c;领导又再后面看着&#xff0c;突然想起一个有意思的问题&#xff0c;为啥我的程序在子进程QThread的子类里打的断点不好用呢&#xff1f;那就解决一下这个问题吧。 原因&#xff1a; 如果您的解释器上…

GitHub加载慢怎么解决

选了一个最简单的方法记录一下 一、GitHub为什么加载这么慢 简而言之就是&#xff0c;国内DNS默认解析到美国服务器&#xff08;慢&#xff09;&#xff0c;我们只要绕过DNS解析&#xff0c;直接访问韩国日本服务器&#xff08;快&#xff09;就可以解决访问缓慢的问题。 二、…

一个按钮更改Notes字体大小

大家好&#xff0c;才是真的好。 在说到正文以前&#xff0c;我们还是提两句&#xff0c;上周HCL发布了Notes/Domino 12.0.2FP4补丁&#xff0c;以及在亚马逊云应用市场上架了HCL Domino 14.0。 现在谈谈正文部分。 随着岁月飞逝&#xff0c;使用Notes的人也开始日渐眼花&a…

Mac M3 Pro 安装 Zookeeper-3.4.6

1、下载安装包 官方下载地址&#xff1a;https://archive.apache.org/dist/zookeeper/ 网盘下载地址&#xff1a;https://pan.baidu.com/s/1j6iy5bZkrY-GKGItenRB2w?pwdirrx 提取码: irrx 2、解压并添加环境变量 # 将安装包移动到目标目录 mv ~/Download/zookeeper-3.4.6.…

SparkMd5-对文件名称加密

当我收到一个需求是需要对上传的文件名称加密的时候&#xff0c;我便想到了使用md5对文件名称加密&#xff0c;但其实是大题小做了&#xff0c;对文件名称加密其实就是将中文转换成英文字母&#xff0c;所以我们可以换一个更简单的方法来实现这个需求。 在JavaScript中&#xf…

Django Form 组件

Django Form 组件 Django Form 组件是 Django Web 框架中的一个核心功能,它用于创建和处理 HTML 表单。通过 Django Form,开发者可以轻松地定义表单字段、验证用户输入、显示表单以及处理表单数据。本文将详细介绍 Django Form 组件的使用方法,包括创建表单、表单字段、表单…

vue3根据按钮切换更新echarts对应的数据

效果图 初始化注意 setOption的函数定义&#xff0c;option是指图表的配置项和数据&#xff0c;notMerge是指是否不跟之前设置的 option 进行合并。默认为 false。即表示合并。如果为 true&#xff0c;表示所有组件都会被删除&#xff0c;然后根据新option 创建所有新组件 //…

vue引入aos.js实现滚动动画

aos.js官方网站&#xff1a;http://michalsnik.github.io/aos/ aos.js介绍 AOS (Animate on Scroll) 是一个轻量级的JavaScript库&#xff0c;用于实现当页面元素随着用户滚动进入可视区域时触发动画效果。它不需要依赖 jQuery&#xff0c;可以很容易地与各种Web开发框架&#…

MikroTik RouterOS 授权签名验证分析

MikroTik 软路由 百科https://baike.baidu.com/item/mikrotik/9776775官网https://mikrotik.com/ 授权文件分析 -----BEGIN MIKROTIK SOFTWARE KEY------------ mr3jH5qhn9irtF53ZICFTN7Tk7wIx7ZkxdAxJ19ydASY ShhFteHMntBTyaS8wuNdIJJPidJxbuNPLTvCsv7zLA …

Python 字典的哈希机制是如何工作的,它对性能有什么影响?

Python 字典的哈希机制是其能够提供快速查找能力的关键。以下是字典哈希机制的工作原理以及它对性能的影响&#xff1a; 哈希机制的工作原理&#xff1a; 哈希函数&#xff1a; 字典使用内置的哈希函数来为每个键生成一个哈希值。这个哈希值是基于键的值计算出来的&#xff0c…

STM32学习笔记(八)--DMA直接存储器存取详解

&#xff08;1&#xff09;配置步骤1.配置RCC外设时钟 开启DMA外设2.初始化DMA外设 调用DMA_Init 外设存储器站点的起始地址 数据宽度 地址是否自增 方向 传输计数器 是否需要自动重装 选择触发源 通道优先级3.开启DMA控制 4.开启触发信号输出&#xff08;如果需要硬件触发&…

在线报表设计器 ,FastReport Online Designer 2024.2新版本(下)

在上篇文章《在线报表设计器 &#xff0c;FastReport Online Designer 2024.2新版本&#xff08;上&#xff09; 》中&#xff0c;我们已经介绍了部分在线设计器的新功能&#xff0c;这部分将继续为大家介绍其他新功能&#xff0c;欢迎查阅~ 报告设计器中的功能进行了大规模更…

哨兵机制(Redis Sentinel)常见面试题

一、什么是哨兵机制 哨兵机制&#xff08;Redis Sentinel&#xff09;是redis主从集群中实现主从库自动切换的关键机制。它通过监控、选主和通知三个任务来实现主从库的自动切换。在监控任务中&#xff0c;哨兵周期性地检测主从库的在线状态&#xff0c;判断主库是否处于下线状…

对input输入框的正则限制

一、0-100的整数 正则&#xff1a; const inputRules ref([{required: false,trigger: "blur",validator: (rule, value, callback) > {const reg /^[0-9]$/; // 只允许整数if ((0 < value && value < 100 && reg.test(value)) ||valu…

AI时代的数据治理:挑战与策略

随着人工智能&#xff08;AI&#xff09;技术的突飞猛进&#xff0c;我们已迈进智能时代的大门。在这个新时代里&#xff0c;数据无疑成为推动AI创新与进步的核心力量。然而&#xff0c;与此同时&#xff0c;数据治理的紧迫性也日益凸显&#xff0c;它成为确保AI系统有效、公正…

Mybatis动态SQL语句总结

Mybatis动态SQL语句总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. Mybatis简介 Mybatis是一个优秀的持久层框架&#xff0c;它简化了与数据库的交互过…