前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器编排引擎Kubernetes 01——一文带你认识K8S

容器编排引擎Kubernetes 01——一文带你认识K8S

原创
作者头像
用户8100582
修改2024-02-02 19:34:03
3502
修改2024-02-02 19:34:03
举报
文章被收录于专栏:微服务化微服务化

系列目录

  1. 容器编排引擎Kubernetes 01——一文带你认识K8S
  2. 容器编排引擎Kubernetes 02——k8s安装配置
  3. 容器编排引擎Kubernetes 03——初始化集群
  4. 容器编排引擎Kubernetes 04——部署Dashboard
  5. 容器编排引擎Kubernetes 05——命名空间和POD
  6. 容器编排引擎Kubernetes 06——kubectl常用命令
  7. 容器编排引擎Kubernetes 07——Deployment介绍及使用
  8. 容器编排引擎Kubernetes 08——Service介绍及使用
  9. 容器编排引擎Kubernetes 09——资源文件的介绍及使用
  10. 容器编排引擎Kubernetes 10——在k8s集群中部署项目

1 K8S是什么

1.1 K8S介绍

Kubernetes,简称K8s,是用8代替名字中间的8个字符 “ubernete” 而成的缩写。

是一个开源的,用于管理云平台中多个主机上的容器化的应用,K8s的目标是让部署容器化的应用简单并且高效,K8s提供了应用部署,规划,更新,维护的一种机制。

K8s是Google开源的一个容器编排引擎,使用Google自家的Go语言开发。它支持自动化部署、大规模可伸缩、应用容器化管理。

1.2 生产部署

  • 传统部署方式

在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

  • 容器化部署方式

在K8s中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员手工进行复杂的配置和处理。

1.3 使用K8S的特点

  • 可移植:

支持公有云,

私有云(企业内部使用的云),

混合云(提供给外部用户访问的内容到公有云,内部用户访问的内容在私有云),

多重云(multi-cloud)

  • 可扩展:

模块化,插件化,可挂载,可组合

  • 自动化:

自动部署,自动重启,自动复制,自动伸缩/扩展

1.4 K8s与Docker

Docker是应用最广泛的容器技术,它通过打包镜像、启动容器来创建服务。然而,随着应用的日益复杂,容器的数量也不断增加,由此衍生出管理运维容器这一重要问题。

随着云计算的发展,容器的漂移成为云端最大的挑战。K8s正是在这种业务的驱动下,提出了一套全新的基于容器技术的分布式架构领先方案,这是容器技术领域中一个重大突破和创新。

  • Docker 针对 PAAS,是以应用为中心;
  • K8s 是一个管理各个工作节点中容器应用,通过api server进行控制,通过kubelet进行管理的容器管理引擎;
  • K8s解决了密钥配置管理、自动二进制打包、自动部署和回滚、存储编排、服务发现和负载均衡等问题。

2 K8s的集群架构

2.1 K8s的架构

一个 K8s 系统,通常称为一个 K8s 集群,集群主要包括两个部分:

  • Master 节点(通常有一个主节点)
  • Node 节点(用于计算的节点,通常大于1个)

2.2 Master节点

Master 节点主要负责管理和控制,Master 节点内部结构图如下:

Master 节点包括 API Server、Scheduler、Controller Manager、etcd:

  • API Server 是整个系统的对外接口,供客户端和其它组件调用,相当于“服务窗口”;
  • Scheduler 负责对集群内部的资源进行调度,相当于“调度室”;
  • Controller Manager 负责管理控制器,相当于“管理员”;
  • etcd 是保存K8s所有集群数据的后台数据库。

2.3 Node节点

Node 节点是工作负载节点,里面是具体的容器,Node 节点内部结构图如下:

Node节点包括 Docker、kubelet、kube-proxy、pod。

每个 Node 都会被 Master 分配一些工作负载,当某个 Node 宕机时,该节点上的工作负载就会被 Master 自动转移到其它节点上。

在Node上主要运行以下内容:

  • Docker,创建容器,提供k8s在node中运行的环境;
  • Kubelet,负责监视指派到它所在Node上的 Pod,包括创建、修改、监控、删除等;
  • Kube-proxy,主要负责为Pod对象提供代理;
  • Fluentd,主要负责日志收集、存储与查询。

3 K8s的基础组件

3.1 控制平面组件(Control Plane Components)

K8s 被安装在一个叫做控制平面的机器上,控制平面的组件对集群做出全局决策。

3.1.1 Api Server

主节点上负责提供 K8s API 服务的组件,它是 K8s 控制面的前端。

  • Api Server是K8s最重要的核心组件之一,提供集群管理的REST API接口,包括认证授权,数据校验以及集群状态变更等;
  • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有 API Server 才直接操作etcd)
  • 生产环境可以为 Api Server做LA Load Average 或LBLoad Balance,在设计上考虑了水平扩缩的需要。 换言之,通过部署多个实例可以实现扩缩。

3.1.2 Controller Manager

在主节点上运行控制器的组件。

  • Controller Manager 是K8s的大脑,它通过 Api Server 监控整个集群的状态,确保集群处于预期的工作状态;
  • Controller Manager 由一系列的控制器组成,例如,Replication Controller控制副本,Node Controller 控制节点,Deployment Controller 管理部署等。

3.1.3 Scheduler

主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。

Scheduler 负责分配调度 Pod 到集群内的节点上,它监听 Api Server,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点。

3.1.4 etcd

  • K8s 需要存储很多东西,例如自身的节点信息,组件信息,还有通过 K8s 运行的 pod,deployment,service 等等,都需要做持久化,etcd 就是它的数据中心。 生产环境中为了保证数据中心的高可用和数据的一致性,一般会部署最少三个节点;
  • etcd 也可以部署在 K8s 每一个节点,组成 etcd 集群;
  • 如果已经有外部 etcd 服务,K8s 可以直接使用外部 etcd 服务。

3.2 Node组件

节点组件在每个节点上运行,维护运行的Pod并提供K8s运行环境。

3.2.1 kubelet

一旦Pod被调度到对应的宿主机之后,后续要做的事情就是创建这个Pod,并管理这个Pod的生命周期,这里面包括:Pod的增删改查等操作,在K8S里面这部分功能是通过kubelet 这个核心组件来完成的。kubelet的功能分为两类:

  • kubelet操作当前宿主机的资源信息,并启动Pod
  • 与k8s进行交互,获取pod相关的数据,监控当前的Pod变化的事件

3.2.2 kube-proxy

在k8s集群的每个节点上都运行着kube-proxy进程,负责实现k8s中service组件的虚拟IP服务。kube-proxy是让集群服务在外部可以被访问到的重要方式。目前kube-proxy有三种工作模式:

  • User space模式
  • Iptables模式(默认)
  • IPVS模式

3.2.3 容器运行环境

k8s支持多个容器运行环境,如 Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)的容器。

3.2.4 插件

插件使用 k8s资源 (DaemonSet、Deployment等) 实现集群功能。

3.2.5 kube-dns

kube-dns为k8s集群提供命名服务,主要用来解析集群服务名和Pod的hostname。目的是让pod可以通过名字访问到集群内服务。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系列目录
  • 1 K8S是什么
    • 1.1 K8S介绍
      • 1.2 生产部署
        • 1.3 使用K8S的特点
          • 1.4 K8s与Docker
          • 2 K8s的集群架构
            • 2.1 K8s的架构
              • 2.2 Master节点
                • 2.3 Node节点
                • 3 K8s的基础组件
                  • 3.1 控制平面组件(Control Plane Components)
                    • 3.1.1 Api Server
                    • 3.1.2 Controller Manager
                    • 3.1.3 Scheduler
                    • 3.1.4 etcd
                  • 3.2 Node组件
                    • 3.2.1 kubelet
                    • 3.2.2 kube-proxy
                    • 3.2.3 容器运行环境
                    • 3.2.4 插件
                    • 3.2.5 kube-dns
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档