Kubernetes(k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。以下是其基本原理、使用步骤和注意事项的总结:


一、k8s 基本原理

  1. 核心架构

    • Master 节点:控制集群的核心组件,包括:
      • API Server:所有操作的入口,提供 RESTful API。
      • Scheduler:将 Pod 分配到合适的 Node。
      • Controller Manager:维护集群状态(如副本数、故障检测)。
      • etcd:分布式键值存储,保存集群状态。
    • Worker 节点:运行容器化应用,包含:
      • kubelet:与 Master 通信,管理 Pod 生命周期。
      • kube-proxy:处理网络规则和负载均衡。
      • 容器运行时(如 Docker、containerd)。
  2. 关键概念

    • Pod:最小部署单元,包含一个或多个共享资源的容器。
    • Deployment:定义 Pod 的副本数和更新策略。
    • Service:为 Pod 提供稳定的网络访问(ClusterIP、NodePort、LoadBalancer)。
    • Namespace:逻辑隔离集群资源(如开发、生产环境)。
    • ConfigMap/Secret:管理配置和敏感数据。
  3. 工作流程

    • 用户通过 kubectl 或 API 提交 YAML 描述文件。
    • Master 组件协调资源分配,调度 Pod 到 Node。
    • kubelet 拉取镜像并启动容器,持续监控状态。

以下是一个简化的 Kubernetes 架构图,描述 物理机(服务器)、K8s 集群、应用节点 之间的关系,并用文字逐步解释关键组件和交互流程:

Kubernetes 架构图

在这里插入图片描述


关键关系说明

  1. 物理服务器层

    • 提供硬件资源(CPU/内存/存储/网络)。
    • 每台物理机部署一个角色:
      • Master 节点:运行控制平面组件(API Server、Scheduler 等)。
      • Worker 节点:运行应用负载(Pod)。
  2. K8s 集群层

    • Master 节点
      • API Server:接收用户或工具(如 kubectl)的指令。
      • Scheduler:决定 Pod 运行在哪个 Worker 节点。
      • etcd:存储集群状态(如 Pod、Service 配置)。
    • Worker 节点
      • kubelet:与 Master 通信,管理 Pod 生命周期。
      • kube-proxy:处理节点上的网络规则(Service 流量转发)。
      • Pod:最小调度单元,包含一个或多个容器。
  3. 应用层

    • 每个 Pod 中运行具体的容器化应用(如 Nginx、MySQL)。
    • 应用通过 Service 或 Ingress 暴露给外部访问。

交互流程示例

  1. 用户部署应用

    • 用户通过 kubectl apply -f app.yaml 提交请求到 API Server。
    • Scheduler 根据资源情况,将 Pod 分配到 Node1 或 Node2。
    • 目标节点的 kubelet 拉取镜像并启动容器。
  2. 应用访问

    • 其他 Pod 或外部用户通过 Service(如 ClusterIP)访问应用。
    • kube-proxy 负责将请求转发到具体的 Pod。
  3. 高可用性

    • 若 Node1 宕机,Master 检测到故障后,会在 Node2 上重新调度 Pod。

注意事项

  1. 物理机与 K8s 节点的映射

    • 生产环境中,建议 Master 节点独占物理机(避免资源竞争)。
    • Worker 节点可以跨多台物理机,提高容灾能力。
  2. 网络要求

    • 所有物理机需在同一网络,确保 Pod 间可通信。
    • 避免防火墙阻断 K8s 组件端口(如 6443、10250)。
  3. 存储卷

    • 如果应用需要持久化数据,需挂载物理机的存储(如 NFS)或云存储(如 AWS EBS)。

通过此架构图,可以清晰看到:
物理机提供资源 → K8s 管理调度 → 应用运行在 Pod 中
实际部署时,还需考虑网络插件(如 Calico)、负载均衡(如 MetalLB)等组件。


二、使用步骤

1. 安装与初始化
  • 安装工具:kubectlminikube(本地测试)或 kubeadm(生产集群)。
  • 初始化集群(以 kubeadm 为例):
    kubeadm init --apiserver-advertise-address=<MASTER_IP>
    
  • 加入 Worker 节点:
    kubeadm join <MASTER_IP>:6443 --token <TOKEN>
    
2. 部署应用
  • 编写 YAML 文件(例如 deployment.yaml):

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: nginx-deployment
    spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80
  • 应用配置:

    kubectl apply -f deployment.yaml
    
3. 暴露服务
  • 创建 Service:
    apiVersion: v1
    kind: Service
    metadata:name: nginx-service
    spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer
    
4. 监控与维护
  • 查看资源状态:
    kubectl get pods,svc,deployments
    
  • 日志与调试:
    kubectl logs <pod-name>
    kubectl describe pod <pod-name>
    

三、注意事项

  1. 资源规划

    • 确保 Node 资源(CPU、内存)充足,避免 Pod 因资源不足被驱逐。
    • 使用 Resource Requests/Limits 限制容器资源占用:
      resources:requests:cpu: "100m"memory: "256Mi"limits:cpu: "500m"memory: "1Gi"
      
  2. 高可用性

    • 生产环境需部署多 Master 节点,避免单点故障。
    • 使用 Horizontal Pod Autoscaler (HPA) 自动扩缩容。
  3. 安全实践

    • 启用 RBAC 控制权限,避免过度授权。
    • 定期更新 k8s 版本,修复安全漏洞。
    • 敏感数据使用 Secret 而非 ConfigMap。
  4. 网络与存储

    • 选择适合的 CNI 插件(如 Calico、Flannel)解决网络隔离。
    • 持久化存储使用 PersistentVolume (PV)PersistentVolumeClaim (PVC)
  5. 故障排查

    • 常见问题:
      • Pod 一直 Pending:检查资源或调度约束。
      • CrashLoopBackOff:查看容器日志排查应用错误。
    • 使用 kubectl events 查看集群事件。
  6. 备份与恢复

    • 定期备份 etcd 数据:
      etcdctl snapshot save backup.db
      

四、常用命令速查

功能命令示例
查看 Podkubectl get pods -A
进入容器kubectl exec -it <pod> -- bash
删除资源kubectl delete -f file.yaml
查看 Servicekubectl get svc
滚动更新kubectl set image deploy/nginx nginx=nginx:1.20

通过理解这些原理和步骤,可以高效使用 k8s 管理容器化应用。生产环境中建议结合监控工具(Prometheus)和日志系统(ELK)完善运维体系。

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

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

相关文章

Qt 多线程编程:单例任务队列的设计与实现

引言&#xff1a; 在现代应用程序开发中&#xff0c;多线程编程已成为处理异步任务的标配。对于 GUI 应用而言&#xff0c;保持主线程的响应性尤为重要。本文将详细介绍一个基于 Qt 的单例任务队列实现方案&#xff0c;它通过线程池和单例模式&#xff0c;优雅地解决了后台任务…

OpenEuler操作系统中检测插入的USB设备并自动挂载

OpenEuler操作系统中检测插入的USB设备并自动挂载 项目需求&#xff1a;工控机上openeuler操作系统是无界面版本的&#xff0c;在工控机上连接了激光雷达&#xff0c;当激光雷达采集完数据&#xff0c;我们要将采集数据导入u盘&#xff0c;故需要在工控机上插入u盘&#xff0c;…

《Spring 中上下文传递的那些事儿》Part 11:上下文传递最佳实践总结与架构演进方向

&#x1f4dd; Part 11&#xff1a;上下文传递最佳实践总结与架构演进方向 经过前面几篇文章的深入探讨&#xff0c;我们已经系统性地学习了 Spring 应用中上下文传递的各种技术原理、常见问题以及解决方案。从 Web 请求上下文到异步任务、从多租户隔离到日志脱敏&#xff0c;…

使用云虚拟机搭建hadoop集群环境

使用云虚拟机搭建hadoop集群环境 安装jdk17 配置docker网络 docker network create --subnet172.18.0.0/16 hadoop 172.18.0.0&#xff1a;这是子网的网络地址&#xff0c;也就是这个网络的起始地址。/16&#xff1a;这是子网掩码&#xff08;Network Mask&#xff09;&#x…

【机器学习】吴恩达机器学习课程代码作业-Python版本

吴恩达老师的机器学习课程作业是MATLAB版本&#xff08;Octave&#xff09;的&#xff0c;现在有点过时了&#xff0c;我参考了几位大牛的代码&#xff0c;将作业改成了Python3.6版本&#xff0c;并做了中文注释&#xff0c;推荐使用Jupyter notebook。Python作业使用了原版数据…

2025年人工智能、虚拟现实与交互设计国际学术会议

重要信息 官网&#xff1a;www.aivrid.com 时间&#xff1a;2025年10月17-19日 地点&#xff1a;中国-东莞 部分介绍 征稿主题 包括但不限于&#xff1a; 生物特征 模式识别 机器视觉 专家系统 深度学习 智能搜索 自动编程 智能控制 智能机器…

SHA-256算法流程分析与详解——Github工程结合示例和动画演示

近日笔者在学习区块链的相关知识&#xff0c;接触到SHA-256算法&#xff0c;这里做一个知识梳理和总结。 强烈推荐大家自行去学习下面链接github上的工程&#xff0c;作者的动画演示和解释做的非常出色&#xff0c;逻辑非常清晰&#xff0c;B站搬运的对应的油管的讲解视频也放…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN (CSP模块)

3. Method 方法 3.1 Cross Stage Partial Network 跨阶段局部网络 3.1.1 Cross Stage Partial Network 跨阶段局部网络 3.1.1.1 ResNet 和 DenseNet 的优缺点主流的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;如ResNet [8]、ResNeXt [37]、DenseNet [11]&#x…

前端学习4:小白入门注册表单的制作(包括详细思考CSS、JS实现过程)

这篇我们来做一个简单表单&#xff0c;即常见的注册页面吧~学习完这篇我们将学习到Input、label、CSS伪类、CSS入门、更多的JS操作等。。一、首先明确需求&#xff1a;直接模仿常见的注册页面&#xff0c;包括&#xff1a;用户名、Email、性别&#xff08;单选按钮男/女&#x…

强化学习 (RL) 新突破:超越游戏,走向复杂现实决策

强化学习 (RL) 新突破&#xff1a;超越游戏&#xff0c;走向复杂现实决策 强化学习&#xff08;Reinforcement Learning&#xff0c; RL&#xff09;作为人工智能的核心范式之一&#xff0c;历经数十年的发展&#xff0c;正迎来一场深刻的范式转移。曾以战胜人类顶尖选手的Alph…

2025年6-7月AI领域关键进展:从药物研发到全球监管--AI深度融入产业与社会

2025年6月至7月&#xff0c;人工智能领域继续以惊人速度发展&#xff0c;在技术突破、行业应用、政策法规、企业战略及学术研究等方面取得了一系列重要里程碑。以下为关键动态&#xff1a;一、技术突破&#xff1a; AI向生命科学和认知科学纵深挺进DeepMind启动AI设计药物人体试…

【TOOL】ubuntu升级cmake版本

文章目录一、下载cmake脚本二、安装一、下载cmake脚本 在编译新工程时遇到cmake版本过低的情况&#xff0c;到 cmake官网 下载指定cmake安装脚本&#xff1a; 若需下载指定版本&#xff0c;见上图右上角蓝框。 二、安装 # 赋予可执行权限 sudo chmod x cmake-3.31.8-linux-x8…

GMSK调制解调系统的matlab性能仿真,对比维特比解调,1bit差分解调,2bit差分解调

目录 1.前言 2.算法运行效果图预览 3.算法运行软件版本 4.部分核心程序 5.算法仿真参数 6.算法理论概述 7.参考文献 8.算法完整程序工程 1.前言 GMSK(Gaussian Minimum Shift Keying&#xff0c;高斯最小频移键控)是一种连续相位调制技术&#xff0c;基于MSK调制改进而…

SQL138 连续两次作答试卷的最大时间窗

SQL138 连续两次作答试卷的最大时间窗 问题分析 找出2021年至少有两天作答的用户计算每个用户连续两次作答的最大时间窗基于历史数据预测在这个时间窗内平均会做多少套试卷 版本1 with-- 功能​&#xff1a;筛选2021年至少有两天作答的用户及其作答记录-- 子查询找出2021年…

TensorFlow2 study notes[2]

文章目录tf.autodiff.ForwardAccumulatorreferencestf.autodiff.ForwardAccumulator the function can be used to achieve the Computation of Jacobian-vector products with forward-mode autodiff. primals is variables need to watch.tangents is direction vector. …

稳定币将成为新时代的重要金融工具

在数字经济加速渗透的今天,加密货币作为一种新型价值载体,正深刻改变着全球金融的运作逻辑。其中,稳定币与非稳定币构成了加密货币生态的两大支柱,二者在设计逻辑、应用场景和市场表现上呈现出显著差异。 稳定币锚定法定货币 稳定币是一类以法定货币、大宗商品或其他资产…

Constants

本节是《Solidity by Example》的中文翻译与深入讲解&#xff0c;专为零基础或刚接触区块链开发的小白朋友打造。我们将通过“示例 解说 提示”的方式&#xff0c;带你逐步理解每一段 Solidity 代码的实际用途与背后的逻辑。 Solidity 是以太坊等智能合约平台使用的主要编程语…

五镜头倾斜摄影相机的技术优势与应用原理

倾斜摄影技术作为三维实景建模的核心手段&#xff0c;其硬件设计直接影响数据采集效率与模型质量。在众多镜头配置方案中&#xff0c;五镜头结构&#xff08;下视前、后、左、右四个倾斜视角&#xff09;已成为行业主流选择。这一设计并非偶然&#xff0c;而是基于严苛的技术需…

ThinkSound V2版 - 一键给无声视频配音,为AI视频生成匹配音效 支持50系显卡 一键整合包下载

ThinkSound 是阿里通义实验室开源的首个音频生成模型&#xff0c;它能够让AI像专业“音效师”一样&#xff0c;根据视频内容生成高度逼真、与视觉内容完美契合的音频。 ThinkSound 可直接应用于影视后期制作&#xff0c;为AI生成的视频自动匹配精准的环境噪音与爆炸声效&#x…

如何从0开始构建自己的第一个AI应用?(Prompt工程、Agent自定义、Tuning)

一、前言 从0开始基于自定义Agent构建AI应用&#xff0c;涉及从创建智能Agent到使用、测试及优化提示词等一系列步骤。前置&#xff1a;什么是LLM、Prompt、Mcp和Agent&#xff1f; 二、步骤一&#xff1a;规划和设计AI应用 在创建AI应用之前&#xff0c;你需要明确应用的目标…