CentOS 7 下 Kubernetes 集群搭建与配置指南

news/2025/9/24 19:19:25/文章来源:https://www.cnblogs.com/beebe/p/19109822

环境准备

系统要求

  • 至少3台CentOS 7服务器(1个Master,2个Worker节点)

  • 每台服务器至少2GB RAM,2核CPU

  • 所有节点间网络互通

  • 关闭防火墙和SELinux(生产环境请按需配置)

主机规划示例

 
主机名IP地址角色
k8s-master 192.168.1.10 Master节点
k8s-node1 192.168.1.11 Worker节点
k8s-node2 192.168.1.12 Worker节点

第一步:所有节点基础配置

1. 设置主机名和hosts解析

bash
# 在master节点执行
hostnamectl set-hostname k8s-master# 在node1节点执行
hostnamectl set-hostname k8s-node1# 在node2节点执行
hostnamectl set-hostname k8s-node2# 所有节点编辑/etc/hosts文件
cat >> /etc/hosts << EOF
192.168.1.10 k8s-master
192.168.1.11 k8s-node1
192.168.1.12 k8s-node2
EOF

2. 关闭防火墙和SELinux

bash
# 所有节点执行
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3. 关闭swap

bash
# 所有节点执行
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

4. 配置内核参数

bash
# 所有节点执行
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOFsysctl --system

5. 配置yum源

bash
# 所有节点执行
# 备份原有yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 下载阿里云yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 添加Docker和Kubernetes yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

第二步:安装Docker

所有节点安装Docker

bash
# 安装Docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io# 配置Docker
mkdir /etc/docker
cat <<EOF > /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF# 启动Docker
systemctl daemon-reload
systemctl enable docker
systemctl start docker

第三步:安装Kubernetes组件

所有节点安装kubeadm, kubelet, kubectl

bash
# 安装指定版本(避免版本兼容性问题)
yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15 --disableexcludes=kubernetes# 启动kubelet
systemctl enable kubelet
systemctl start kubelet

第四步:Master节点初始化

1. 初始化集群

bash
# 在master节点执行
kubeadm init \--apiserver-advertise-address=192.168.1.10 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.20.15 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16# 初始化成功后,按照提示配置kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

2. 保存加入集群的命令

bash
# 保存join命令(用于worker节点加入)
kubeadm token create --print-join-command

第五步:安装网络插件

安装Flannel网络插件

bash
# 在master节点执行
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

第六步:Worker节点加入集群

在每个worker节点执行join命令

bash
# 在k8s-node1和k8s-node2上执行(使用上一步生成的命令)
kubeadm join 192.168.1.10:6443 --token <token> \--discovery-token-ca-cert-hash sha256:<hash>

第七步:验证集群状态

在master节点检查集群状态

bash
# 查看节点状态
kubectl get nodes# 查看所有pod状态
kubectl get pods --all-namespaces# 查看集群信息
kubectl cluster-info

第八步:部署测试应用

部署Nginx测试应用

bash
# 创建deployment
kubectl create deployment nginx --image=nginx:1.14# 暴露服务
kubectl expose deployment nginx --port=80 --type=NodePort# 查看服务
kubectl get svc nginx# 测试访问(使用任一节点的IP和分配的端口)
curl http://<node-ip>:<node-port>

常见问题排查

1. 节点NotReady问题

bash
# 检查kubelet状态
systemctl status kubelet# 查看kubelet日志
journalctl -xeu kubelet# 检查网络插件状态
kubectl get pods -n kube-system

2. Pod网络问题

bash
# 重启flannel
kubectl delete pods -l app=flannel -n kube-system

3. 重置节点(如果需要重新加入)

bash
kubeadm reset
rm -rf /etc/kubernetes/
rm -rf ~/.kube/
rm -rf /etc/cni/

生产环境建议

1. 高可用配置

  • 部署多个Master节点实现高可用

  • 使用负载均衡器暴露API Server

2. 安全配置

  • 启用RBAC权限控制

  • 配置网络策略

  • 定期更新证书

3. 监控和日志

  • 部署Prometheus监控

  • 配置ELK日志收集

  • 设置资源限制和请求

总结

本指南提供了在CentOS 7上部署Kubernetes集群的完整流程。实际生产环境中,请根据具体需求调整配置参数,并考虑安全性和高可用性要求。建议在部署前充分测试,确保各组件版本兼容性。

 
 
 

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

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

相关文章

wpf 自定义输入ip地址的文本框 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站建设图文做营销网站视频

【JavaEE】Spring Boot 开发要点总结&#xff08;3&#xff09; 文章目录 【JavaEE】Spring Boot 开发要点总结&#xff08;3&#xff09;1. 日志有什么作用2. 日志格式2.1 日志框架原理 3. 日志的打印3.1 System.out.println3.2 使用日志框架3.3 日志级别3.3.1 设置默认日志显…

模板式自助建站wordpress ping服务器

git误操作带来的麻烦-merge 我想将一个分支的内容完全覆盖远程另外一个分支的内容怎么做 如果你想将一个本地分支&#xff08;我们称之为source-branch&#xff09;的内容完全覆盖远程的另一个分支&#xff08;我们称之为target-branch&#xff09;&#xff0c;可以按照以下步…

徐州做网站最好的公司网站在线制作软件

前言&#xff1a;希望通过本文&#xff0c;使MySQL5.7.18的使用者知晓分区表使用中存在的陷阱&#xff0c;避免在该版本上继续踩坑。同时通过对源码的分享&#xff0c;升级MySQL5.7.18时分区表性能下降的根本原因&#xff0c;向MySQL源码爱好者展示分区表实现中锁的运用。问题描…

【macOS】垃圾箱中文档无法清理的“含特殊字符文件名”的技巧

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

公司网站简介开发定制软件系统

文章目录 象棋王子电子木鱼BabyGo 象棋王子 考点&#xff1a;前端js代码审计 直接查看js源码&#xff0c;搜一下alert 丢到控制台即可 电子木鱼 考点&#xff1a;整数溢出 main.rs我们分段分析 首先这段代码是一个基于Rust的web应用程序中的路由处理函数。它使用了Rust的异步…

Git 工作树 (worktree)、合并 (merge) 流程、拉取请求 (PR) 机制,以及基线分支概念

提升效率:掌握 Git 工作流中的高阶技巧与基线管理在团队协作和复杂项目开发中,高效使用 Git 远不止 commit 和 push 这么简单。掌握 git worktree、规范的合并流程和 PR 机制,是提升开发效率的关键。本文将为您梳理…

【HD300I 】基于昇腾 310P 的全国产化智能计算模组

产品概述 HD300I 是一款基于昇腾 310P 的全国产化智能计算模组。该模 组将昇腾 310P 芯片集成在了一个 140*80mm 的板卡上,可以作为一 个紧凑的核心模块,进行功能的扩展,能够快速搭建起一个 AI 边缘智 能计算推理的…

mvc做的网站如何发布访问新建网站的评估

2019独角兽企业重金招聘Python工程师标准>>> 俗话说的好啊&#xff0c;“工于利启事&#xff0c;必先善其器”&#xff0c;如果说你的编程功底是一个枪法的话&#xff0c;那么强大的eclipse就是android战士们最好的武器。 这里&#xff0c;我们来总结eclipse的使用技…

新手做网站详细步骤公司装修免费设计

大家好我是苏麟 , 今天聊聊怎么继续使用Java8做项目 . 在做项目的时候突然发现Java8没了 , 我心想 : " 嗯? IDEA出毛病了?" ,经过我仔细检查原来是spring官方不支持Java8了 . IDEA 内置的 Spring Initializr 创建 Spring Boot 新项目时&#xff0c;没有 Java 8 的选…

《密码系统设计》第三周

20231313 张景云《密码系统设计》第三周预习AI对内容的总结 《嗨翻C语言》第四章内容总结 一、多源文件开发核心思想:分而治之 大型程序无需局限于单个源文件,将源代码拆解为小模块(多个源文件),可大幅降低维护难…

详细介绍:Cloudflare 推出 GenAI 安全工具,守护企业数据

详细介绍:Cloudflare 推出 GenAI 安全工具,守护企业数据pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

惠州市+网站开发公司福州做网站建设

如何测试光纤网速?如何测试网速多少兆网速测试的选择有很多&#xff0c;你在安装宽带的时候&#xff0c;网络提供商可能给你介绍到什么网站或者下载什么软件进行网速测试。而不管你使用什么来测试网速&#xff0c;你都不应该只使用一个方法&#xff0c;正确的做法是使用多个方…

宁波网站建设在哪里the7企业中 英文wordpress模板

Moved to http://blog.tangcs.com/2008/06/15/pinvoke-and-marshaling-data-1/转载于:https://www.cnblogs.com/WarrenTang/archive/2008/06/15/1222750.html

论小学教师转移矛盾的方法——以“小组连坐制”为例

前言 本文旨在探讨小学教师转移自己与学生之间矛盾的方法。经过一段时间的教学以后,学生与教师难免产生一些矛盾,而防止冲突的最简单方法就是将矛盾转移出去——毕竟大部分小学生还没有经过系统性的思辨训练,很容易…

编译器与链接器--通俗解释

整理、查找、关联判断力是一个人最重要的能力

VS2022 不支持 .NET Framework 4.0 的解决方法

Visual Studio 2022 默认不再支持 .NET Framework 4.0,这可能导致旧项目无法正常加载或编译。以下是解决此问题的几种方法。示例问题当尝试打开基于 .NET Framework 4.0 的项目时,可能会出现以下错误提示:找不到 .N…

【Origin】数据分析后的图,提取到外部图表

1、想要提取的图2、左边窗口还原,再双击打开该均值图,使其浮动3、在浮窗上右键,点击创建副本即可,左边出现绘图副本 Love for Ever Day

怎么做钓鱼网站万网个人网站

题目描述 小明家住在一条胡同里。胡同里的门牌号都是连续的正整数&#xff0c;由于历史原因&#xff0c;最小的号码并不是从1开始排的。 有一天小明突然发现了有趣的事情&#xff1a; 如果除去小明家不算&#xff0c;胡同里的其它门牌号加起来&#xff0c;刚好是100&#xff01…

做网站关键词加到什么位置园区智慧管理平台

夏天天气炎热&#xff0c;电脑机箱内温度也较高&#xff0c;温度过高会影响电脑性能出现死机等问题&#xff0c;甚至影响硬件寿命。所以给机箱装风扇来散热是非常重要的。那么&#xff0c;机箱风扇怎么装合理呢?机箱风扇的电源线怎么接呢?下面分享一下机箱风...夏天天气炎热&…