Kubernetes权威指南-基础篇

news/2025/9/20 14:52:23/文章来源:https://www.cnblogs.com/marlon1475/p/19102447

Kubernetes入门

Kubernetes简介

  • 背景与起源
    • Borg系统的开源版本:Kubernetes的思想源于Google内部运行了十几年的大规模集群管理系统Borg,Google将Borg的理念和经验付诸实践,并将其开源,这就是Kubernetes(常简称为K8s)。
    • CNCF与云原生:Kubernetes是云原生计算基金会(CNCF) 的旗舰项目,并且已经成为云原生时代的操作系统
  • 官方定义
    • Kubernetes是一个开源的容器编排引擎,用于自动化部署、扩展和管理容器化应用。
    • 它提供了一个以容器为中心的管理环境,旨在实现生产级别的容器编排和运维能力。

为什么要用Kubernetes?

  • 演进历程
    • 传统部署时代:应用直接运行在物理服务器上,资源分配难以控制,应用之间容易产生资源争用,扩容成本高、周期长。
    • 虚拟化部署时代:通过虚拟机(VM)在单台物理机上运行多个操作系统。提供了更好的资源隔离和安全性,并且更容易扩容。但每个VM都包含一整套操作系统,体积庞大、笨重,资源开销大。
    • 容器化部署时代:容器与宿主机共享操作系统内核,因此更轻量、启动更快、资源效率更高。Docker使容器技术普及,但当容器数量增多、分布 across 多台主机时,如何管理它们的生命周期、网络互联、存储挂载、故障恢复和扩容?这就需要容器编排
  • Kubernetes的核心价值(解决了哪些痛点)
    • 服务发现与负载均衡:K8s可以为容器组提供唯一的域名和虚拟IP地址(Service),并自动将请求负载均衡到多容器实例上。
    • 存储编排:可以自动挂载选择的存储系统,无论是本地存储、云提供商(如AWS EBS)还是网络存储系统(如NFS, Ceph)。
    • 自动部署和回滚:可以描述应用的期望状态,K8s会以可控的速率将实际状态改变为期望状态,如果部署出错,可以轻松回滚。
    • 自动调度:K8s调度器会依据每个容器对CPU和内存(RAM)的资源需求,自动安排到合适的节点上运行以最大化资源利用率。
    • 自我修复:这是最关键的能力之一。K8s能持续监控集群状态。
      • 如果某个容器故障崩溃,它会重启该容器。
      • 如果某个节点宕机,它会将在该节点上运行的容器重新调度到其他健康节点上。
      • 如果服务不响应健康检查,它会终止该容器并在别处重新启动它。
    • 密钥与配置管理:可以存储和管理敏感信息(如密码、OAuth令牌)和应用程序的配置信息(如配置文件),并能在不重建容器镜像的情况下部署和更新这些secret和配置。

Kubernetes入门实例

  • 启动一个Deploymentkubectl create deployment nginx --image=nginx
    • 意图:告诉K8s运行一个名为nginx的应用,它使用nginx这个Docker镜像。
    • K8s的行动:K8s会创建一个Deployment对象,它负责保证Nginx容器的运行。随后,Deployment会创建一个Pod(容器组)来实际运行Nginx容器。
  • 将服务暴露给外部kubectl expose deployment nginx --port=80 --type=NodePort
    • 意图:前文的Nginx只在集群内部可以访问,现在让外部用户也能访问到它。
    • K8s的行动:K8s会创建一个Service对象,其类型为NodePort。这意味着K8s会在集群的每个节点上打开一个端口(如30080),并将访问该端口的所有流量转发到后台的Nginx Pod上。
  • 访问应用:用户可以通过<任意节点的IP地址>:30080来访问Nginx的欢迎页面。

Kubernetes的基本概念和术语

  • 集群类

    • Master(控制平面):集群的“大脑”。负责管理、调度、决策和暴露API。通常包含以下核心组件:

      API Server:所有资源操作的唯一入口,是各个组件之间通信的枢纽。

      Scheduler:负责根据资源情况将新创建的Pod调度到合适的Node上。

      Controller Manager:运行着各种控制器,负责维护集群的状态(如故障检测、自动扩展、滚动更新)。

      etcd:一个高可用的键值数据库,持久化存储整个集群的状态和配置数据。

    • Node(工作节点):集群的“工作肌肉”。负责运行容器。每个Node上至少运行:

      Kubelet:负责与Master通信,管理当前节点上Pod的生命周期(如创建、销毁容器)。

      Kube-proxy:负责维护节点上的网络规则,实现Service的负载均衡和流量转发。

      容器运行时:如Docker或containerd,负责真正运行容器。

  • 应用类(最核心的一组概念)

    • PodK8s调度和管理的最小单位。一个Pod可以包含一个或多个紧密关联的容器(如主应用容器和日志收集Sidecar容器)。这些容器共享网络命名空间、IP地址、端口空间和存储卷。Pod是 ephemeral(短暂的),会被频繁地创建和销毁。

    • Label标签,是附加到K8s对象(如Pod)上的键值对,用于标识对象的特定属性,是进行筛选和分组的核心手段。

    • Controller(控制器):通过管理Pod模板来维护应用的期望状态

      Deployment:最常用的控制器,用于部署无状态应用,它管理ReplicaSet,并提供滚动更新、回滚等强大功能。

      ReplicaSet:确保指定数量的Pod副本始终在运行通常由Deployment自动创建和管理,一般不需要直接操作。

      StatefulSet:用于部署有状态应用(如MySQL),它为Pod提供稳定的标识符、有序的部署和扩展、稳定的持久化存储

      DaemonSet:确保每个Node上都运行一个指定的Pod副本,用于运行集群级别的守护进程,如日志收集器(Fluentd)。

      Job/CronJob:用于运行一次性任务定时任务,任务完成后Pod即退出。

    • Service服务发现与负载均衡的核心,定义一个访问Pod的逻辑集合(通常由Label选择器确定)的策略,Service有稳定的IP地址和DNS名称,无论后端的Pod如何重启、迁移,访问方式都保持不变。类型包括:

      ClusterIP:默认类型,仅在集群内部可访问。

      NodePort:通过每个节点的IP和静态端口暴露服务。

      LoadBalancer:使用云服务商提供的负载均衡器对外暴露服务。

    • Ingress:管理外部访问集群服务的API对象,通常是HTTP/HTTPS流量,提供了比Service LoadBalancer更强大的功能,如基于域名和路径的路由、SSL终止等,需要配合Ingress Controller(如Nginx, Traefik)使用。

  • 存储类

    • Volume:卷,解决了Pod内容器共享数据以及数据持久化的问题,但Volume的生命周期与Pod绑定。
    • PersistentVolume:集群级别的存储资源,由管理员预先配置(如NFS卷、云存储盘)。
    • PersistentVolumeClaim:用户对存储资源的申请,Pod通过PVC来使用PV,从而实现了存储与Pod的解耦,使得Pod可以随意调度而不担心数据丢失。
  • 配置与安全类

    • Namespace:命名空间。在物理集群内部提供虚拟的隔离,用于将资源划分到不同的项目、团队或环境(如dev, prod)。
    • ConfigMap:用于将非机密的配置数据(如配置文件、环境变量)与应用代码分离。
    • Secret:用于存储敏感信息,如密码、令牌、密钥。数据以Base64编码存储,提供一定的安全性。

Kubernetes安装配置指南

核心安装方案详解

  • 创建TLS证书和秘钥:需要为etcd、API Server、kubelet等各个组件以及管理员分别创建证书,并确保它们被正确的CA签名。。
  • 部署高可用的etcd集群:在多个节点上部署etcd,配置其对等证书加密通信,并组成集群,这是整个集群的“数据库”,必须先部署。
  • 部署Master组件(控制平面)
    • API Server:配置其连接etcd的证书、服务端证书、以及用于认证的token文件等。
    • Controller Manager:配置其kubeconfig文件以安全地访问API Server。
    • Scheduler:同样配置其kubeconfig文件。
    • 这些组件通常通过systemd守护进程来管理。
  • 部署Node组件
    • kubelet:配置最复杂。需要其bootstrap kubeconfig文件(用于首次申请证书)、证书轮换、连接容器运行时等参数。
    • kube-proxy:配置其kubeconfig文件以访问API Server。
  • 部署集群插件:同样需要手动部署DNS和网络插件。

关键配置与运维指南

  • 使用私有镜像库:企业环境中通常使用私有Harbor或Nexus仓库。
    • 需要在所有节点上登录私有仓库docker login)。
    • 创建Kubernetes Secret,并在Pod定义中通过imagePullSecrets字段引用它,这样kubelet才有权限拉取私有镜像。
  • Kubernetes的版本升级
    • 介绍如何安全地进行集群升级,通常遵循“先Master,后Node”的顺序。
    • 对于kubeadm集群,会介绍kubeadm upgrade命令的使用。
    • 强调升级前一定要备份etcd和数据。
  • CRI详解
    • 解释容器运行时接口的概念。Kubernetes并不直接操作Docker,而是通过CRI这个抽象接口与容器运行时交互。
    • 这使得Kubernetes可以支持多种运行时(Docker, containerd, CRI-O)。书中会解释如何配置kubelet来使用不同的CRI。
  • kubectl命令行工具用法详解
    • 语法格式kubectl [command] [TYPE] [NAME] [flags]
    • 常用命令get, describe, create, apply, delete, logs, exec
    • 输出格式-o wide, -o yaml, -o json, -o name 等。
    • kubectl补全:如何启用bash/zsh的自动命令补全功能,极大提升效率。

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

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

相关文章

【IEEE出版、已连续6届EI稳定检索】第七届机器学习、大数据与商务智能国际会议 (MLBDBI 2025)

第七届机器学习、大数据与商务智能国际会议(MLBDBI 2025) 2025 7th International Conference on Machine Learning, Big Data and Business Intelligence 在这里看会议官网详情 大会时间:2025年10月24-26日 大会地…

构建AI智能体:三十八、告别“冷启动”:看大模型如何解决推荐系统的世纪难题 - 实践

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

office2024安装教程(附安装包)Office 2024 专业增强版下载安装激活详细图文步骤

一、为啥推荐 Office 2024 专业增强版?(新手必看) 现在办公真离不开好用的套件,Office 2024 专业增强版比 2021、2019 这些老版本强太多了 —— 不管是上班族做数据报表、写项目方案,还是学生写毕业论文、做答辩 …

EMS 抗扰度在边缘计算产品电路设计的基本问题 - 教程

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

20231326王荣盛《密码系统设计》第二周预习报告

20231326王荣盛《密码系统设计》第二周预习报告20231326王荣盛《密码系统设计》第二周预习报告 目录20231326王荣盛《密码系统设计》第二周预习报告学习内容《Windows C/C++ 加密解密实战》第3章《Windows C/C++ 加密解…

Gitflow 工作流程

代码版本如何控制,便于在工作中代码乱改,版本管理紊乱。写在前面 在工作场合实施 Git 的时候,有很多种工作流程可供选择,此时反而会让你手足无措。企业团队最常用的一些 Git 工作流程,包括 Centralized Workflow、…

魔改chromium真正通杀全网debugger检测

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 通过魔改chromium,做…

C#依赖注入

一、什么是依赖注入? 依赖指的是:当一个类(A)需要另一个类(B)的功能才能完成工作时,A 就 "依赖" 于 B。例如:OrderService需要用Logger记录日志,那么OrderService依赖于Logger。依赖注入的核心思想…

springboot手写源码总结

springboot手写源码总结先创建spring容器,然后将配置类(也就是启动类,因为上面有标注@ComponentScan和@Configuration注解)注册到spring容器中去,进行扫描。然后将spring容器绑定到servlet中,将servlet添加到tom…

完整教程:Docker Compose 一键启动多容器服务

完整教程:Docker Compose 一键启动多容器服务pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

【截稿倒计时、高录用、稳检索】2025年教育创新与信息技术国际学术会议(EIIT 2025)

【高录用、稳检索】 2025年教育创新与信息技术国际学术会议 2025 International Conference on Educational Innovation and Information Technology (EIIT 2025) 教育、创新、信息科学相关主题方向均可投稿 *参会者现…

低代码 + AI 构建智慧校园系统:某高校宿舍报修平台的48小时构建全流程

低代码 + AI 构建智慧校园系统:某高校宿舍报修平台的48小时构建全流程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

[MCP][07]logging和progress等功能说明

除了基础的Prompt、Resource和Tool概念,FastMCP还提供了以下功能:Sampling、Elicitation、Logging、Progress、Proxy、Middleware、Composition和Authentication功能前言 截至目前(2025年9月19日),除了基础的Prom…

端口命令

1、查询指定端口(如查询 8080 端口):netstat -ano | findstr "8080"结果说明:LISTENING 表示端口正在监听;最后一列数字是 进程 PID2、通过 PID 查对应进程(如 PID 为 1234):tasklist | findstr &qu…

Microsoft OLE漏洞致远程代码执行安全公告解析

微软发布安全公告3010060,披露Windows OLE组件远程代码执行漏洞。攻击者通过特制PowerPoint文件实施定向攻击,本文提供受影响环境、攻击向量及临时缓解方案(Fix it工具、UAC配置、EMET部署)的详细技术指导。セキュ…

写代码还是写提示词?——Prompt 工程是不是程序员的新技能树

过去二十年,程序员的核心技能几乎没变:学语言、写代码、调 bug。但是 AI 大模型的出现,正在悄悄改写这套逻辑。 有人开始疑惑:👉 “未来的程序员,还需要会写代码吗?”👉 “Prompt 工程(提示词工程)是不是新…

c-store发送dcm文件超时

错误代码:FellowOakDicom.Network.DicomAssociationRequestTimedOutException:“The association request timed out 3 times, waiting 5000ms each time for the association response等超时返回解决方案:首先要明白…

解码C语言模块化编程

一、模块化设计原则原则 说明 示例高内聚 模块内部功能紧密相关 将数学计算函数集中到 math_utils 模块低耦合 模块间依赖最小化(通过接口通信) 使用头文件声明接口,隐藏实现细节单一职责 每个模块只解决一个特定问…

redis存储漂流瓶信息

问题 比如漂流瓶的数据,都放在redis里,支持12小时过期,支持最大捡起数,支持重复捡取。 漂流了内容,有头像,昵称,内容(文字,语音),年龄,城市,过期时间,读取次数。 支持随机捡瓶子。 使用tp5需要怎么设计…

hashcat高效爆破Wi-Fi密码方法(比aircrack-ng快)

​ (tip:本文所有操作在个人测试环境下运行,请不要用于违法行为) 准备工具: 电脑 kali-linux-2025.2系统(4G内存以上) ----在aircrack爆破时,无线网络审计套件(aircrack-ng)作为内置模组组件常用于一体化流程爆破密…