当前位置: 首页 > news >正文

Kubernetes

Kubernetes简介

什么是Kubernetes?

Kubernetes(通常简称为K8s)是一个开源的容器编排平台,旨在自动化应用程序的部署、扩展和管理。它最初由Google设计并开源,现在由Cloud Native Computing Foundation (CNCF) 维护。

Kubernetes的核心功能:

  • 服务发现和负载均衡:Kubernetes可以使用DNS名称或自己的IP地址公开容器,并在多个容器间分配网络流量。
  • 存储编排:自动挂载所选存储系统,如本地存储、公共云提供商等。
  • 自动部署和回滚:可以描述已部署容器的所需状态,并以受控的速率将实际状态更改为期望状态。
  • 自动完成装箱计算:指定每个容器所需的CPU和内存,Kubernetes将容器放置在最适合的节点上。
  • 自我修复:重新启动失败的容器、替换和重新调度无响应的容器,以及杀死不符合健康检查的容器。
  • 密钥与配置管理:在不重建镜像的情况下,管理密钥和应用程序配置。

为什么使用Kubernetes?

在容器化的现代应用环境中,Kubernetes提供了:

  • 基础设施抽象,使开发人员专注于应用开发而非运维
  • 基于声明式API的自动化
  • 可移植性,支持多云和混合云环境
  • 微服务架构的天然支持
  • 企业级的高可用、伸缩和安全能力

核心架构

Kubernetes采用主从架构设计,由以下部分组成:

控制平面(Control Plane)

控制平面负责管理集群的全局决策(如调度),以及检测和响应集群事件(如当Pod的副本数不满足要求时启动新的Pod)。

控制平面组件包括:

  • kube-apiserver:暴露Kubernetes API,是整个系统的前端接口。
  • etcd:一致且高可用的键值存储,用于保存所有集群数据。
  • kube-scheduler:监视新创建的、未指定运行节点的Pod,并选择节点让Pod在上面运行。
  • kube-controller-manager:运行控制器进程,处理集群中的常规任务。包括:
    • 节点控制器:当节点宕机时进行通知和响应
    • 副本控制器:维护正确数量的Pod副本
    • Endpoints控制器:填充Endpoints对象(即加入Service与Pod)
    • 服务账户和令牌控制器:为新的命名空间创建默认账户和API访问令牌
  • cloud-controller-manager:与底层云提供商交互的控制器

工作节点(Node)

节点是Kubernetes中的工作机器,可以是物理机或虚拟机。每个节点包含运行Pod所需的服务,并由控制平面组件管理。

节点组件包括:

  • kubelet:确保容器在Pod中运行。
  • kube-proxy:维护节点上的网络规则,允许从集群内部或外部的网络会话与Pod通信。
  • 容器运行时:负责运行容器的软件,如Docker、containerd或CRI-O。

通信架构

Kubernetes系统组件之间的通信分为以下几种方式:

  1. API服务器与其他组件通信:所有组件通过API服务器进行通信,不直接相互通信。
  2. 控制平面与节点通信:主要通过API服务器与kubelet进程通信。
  3. API服务器与kubelet通信
    • 获取Pod日志
    • 连接到运行中的Pod
    • 提供kubectl执行代理功能
  4. API服务器与节点、Pod和服务的通信:默认使用普通的HTTP通信。

基础组件

Pod

Pod是Kubernetes中最小的可部署计算单元,代表集群中运行的进程。

特点:

  • 包含一个或多个容器,共享存储、网络和如何运行容器的规范
  • Pod中的容器共享IP地址和端口空间
  • Pod是短暂的,不会被重新调度到新节点,而是被一个相同的新Pod替代
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

ReplicaSet

ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。

特点:

  • 确保指定数量的Pod副本在任何时间运行
  • 提供Pod的高可用性
  • 通常不直接使用,而是使用Deployment
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      labels:
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: gcr.io/google_samples/gb-frontend:v3

Deployment

Deployment提供了对Pod和ReplicaSets的声明式更新。

特点:

  • 描述期望状态
  • 控制器以受控速率更改实际状态
  • 支持回滚和版本控制
  • 适合无状态应用部署
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Service

Service是一种抽象,定义了一组Pod的逻辑集合和访问它们的策略。

特点ÿ

相关文章:

  • 【Java/数据结构】优先级队列(PriorityQueue)
  • .git 文件夹
  • ctfshow WEB web7
  • redis配置文件解析
  • oracle密码过期 ORA-28001解决方案: the password has expired
  • Linux学习笔记(应用篇三)
  • Java 大视界 -- 基于 Java 的大数据分布式系统的监控与运维实践(155)
  • RustDesk部署到linux(自建服务器)
  • Win11+VS2022+CGAL5.6配置
  • 自然语言处理NLP-文本预处理
  • nodejs-原型污染链
  • 4.Matplotlib:基础绘图
  • QT自运行程序
  • 在 VMware Workstation 17 中安装的 Ubuntu 虚拟机无法使用桥接模式
  • 【FDTD Solutions仿真入门及应用】
  • 【高项】信息系统项目管理师(十二)项目干系人管理【3分】
  • 《云原生安全攻防》-- K8s容器安全:权限最小化与SecurityContext
  • 洪水灌溉算法 + 总结
  • shelljs:理解ShellJS / 安装引入 / 常见方法 / 优势 / 应用场景
  • JVM 为什么不使用引用计数算法?——深入解析 GC 策略
  • 杭州“放大招”支持足球发展:足球人才可评“高层次人才”
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?
  • 俄副外长:俄美两国将举行双边谈判
  • 郑培凯:汤显祖的“至情”与罗汝芳的“赤子之心”
  • 检疫期缩减至30天!香港优化内地进口猫狗检疫安排
  • 最高降价三成,苹果中国iPhone开启大促销,能拉动多少销量?