前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s 实践经验(一):认识 k8s

k8s 实践经验(一):认识 k8s

作者头像
看、未来
发布2022-05-06 17:41:48
7250
发布2022-05-06 17:41:48
举报
文章被收录于专栏:CSDN搜“看,未来”
在这里插入图片描述
在这里插入图片描述

文章目录

一篇文章写三遍,提炼精华,去除糟粕。

服务部署方式演变

人言,知其然,知其所以然。k8s 的出现,是解决了什么市场痛点,知道这些,开拓眼界。

互联网早期,企业将服务直接部署在物理机上;后来由于一系列变化,经历了虚拟化部署,开始了 容器部署之路,Docker 无疑是其中的佼佼者。

在这里插入图片描述
在这里插入图片描述

但是,容器化部署方式也会出现一些问题,比如说:

代码语言:javascript
复制
一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器?
当并发访问量变大的时候,怎么样做到横向扩展容器数量?
当并发访问量下降的时候,怎么样去做到动态的缩容?

人工介入,手动操作吗?开什么玩笑啊(此处应有表情包哈哈哈哈)

这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件,软件有很多,不过 k8s 背靠谷歌,脱颖而出。


kubernetes简介

kubernetes的本质是一组服务器集群,它支持自动化部署、大规模可伸缩、 应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。 在 Kubernetes 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

(这段话先预留个伏笔,日后回来再看可能会有不同的感想。)

k8s 主要提供以下服务:

代码语言:javascript
复制
(1)自动装箱:基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)自我修复(自愈能力):当容器失败时,会对容器进行重启。当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度。当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
(3)水平扩展:通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁
(4)服务发现:服务可以通过自动发现的形式找到它所依赖的服务。
(5)滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新。
(6)版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
(6)密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
(7)存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
(8)批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景。
(9)负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡。

Kubernetes 组件介绍

在这里插入图片描述
在这里插入图片描述

一个 kubernetes 集群主要是由 控制节点(master)、工作节点(node) 构成,每个节点上都会安装不同的组件。

master:集群的控制平面,负责集群的决策 ( 管理 )

ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制

Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上

ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等

Etcd :负责存储集群中各种资源对象的信息

node:集群的数据平面,负责为容器提供运行环境 ( 干活 )

Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器

KubeProxy : 负责提供集群内部的服务发现和负载均衡

Docker : 负责节点上容器的各种操作


kubernetes 组件调用关系的应用示例

以部署一个 Nginx 服务来说明 Kubernetes 系统各个组件调用关系:

● ① 首先需要明确,一旦 Kubernetes 环境启动之后,master 和 node 都会将自身的信息存储到etcd数据库中。

● ② 一个Nginx服务的安装请求首先会被发送到 master 节点上的 API Server 组件。

● ③ API Server 组件会调用 Scheduler 组件来决定到底应该把这个服务安装到那个 node 节点上。此时,它会从 etcd 中读取各个 node 节点的信息,然后按照一定的算法进行选择,并将结果告知 API Server 。

● ④ API Server 调用 Controller-Manager 去调用 Node 节点安装 Nginx 服务。

● ⑤ Kubelet 接收到指令后,会通知 Docker ,然后由 Docker 来启动一个 Nginx 的 Pod 。Pod 是 Kubernetes 的最小操作单元,容器必须跑在 Pod 中。


kubernetes 其他概念

Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控

Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行

Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器

Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等

Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod

Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签

NameSpace:命名空间,用来隔离pod的运行环境


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 服务部署方式演变
  • kubernetes简介
  • Kubernetes 组件介绍
    • master:集群的控制平面,负责集群的决策 ( 管理 )
      • node:集群的数据平面,负责为容器提供运行环境 ( 干活 )
        • kubernetes 组件调用关系的应用示例
          • kubernetes 其他概念
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档