k8s-不管你用不用都需要知道的入门知识

260 阅读4分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

官方文档地址:kubernetes.io/zh/docs/hom…

本文是新开的一个专栏,用于专门学习k8s的知识,从入门到逐渐熟练的使用。

一、k8s简介

Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。

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

二、主要功能特点

k8s主要有以下的功能特点:

  • 自动装箱

    基于容器对应用运行环境的资源配置,自动部署应用容器。

  • 自我修复(自愈能力)

    • 容器层面:当容器因错误失败时,k8s会对容器进行重启。

    • 节点层面:当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度。

    • 容器健康功能检测:当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。

  • 水平扩展

    基于 CPU 等资源使用情况,我们可以通过使用简单的命令、用户 UI 界面,对应用容器进行规模扩大或规模剪裁。

  • 服务发现

    自身提供服务发现机制,用户不需使用额外的服务发现机制,就能够基于其自身能力实现服务发现和负载均衡。

  • 滚动更新

    对于应用程序的版本变更,对于运行该应用的容器,可以进行一次性或批量式更新。

  • 版本回退

    应用程序部署后出现问题,对于运行该应用的容器,可以进行历史版本即时回退。

  • 秘钥和配置管理

    在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。

  • 存储编排

    自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。

    存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务。

  • 批处理

    提供一次性任务或周期定时任务,满足批量数据处理和分析的场景。

三、集群架构节点及角色

架构.png

  • Master Node

    k8s 集群控制节点,对集群进行调度管理,接受集群外用户到集群的操作请求;

    Master Node 由 API Server、SchedulerClusterState Store(ETCD 数据库)Controller MangerServer 所组成。

  • Worker Node

    集群工作节点,运行用户业务应用容器;

    Worker Node 包含 kubeletkube proxyContainerRuntime

  • 网络传输

    • CNI(Container Network Interface): 提供一个标准的接口,为满足该协议的所有容器平台提供网络功能。

    • CRI(Container Runtime Interface): 容器运行时接口。一个能让kubelet无需编译就可以支持多种容器运行时的插件接口。

    • OCI(Open Container Initiative): 容器运行时的一个标准。

    • Protobuf:是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。

    • gRPC:一个现代开源的高性能远程过程调用 (RPC) 框架,可以在任何环境中运行。

    • JSON:比较常见的网络传输协议

四、k8s集群搭建方式简介

目前生产部署 Kubernetes 集群主要有两种方式:

  • kubeadm

    Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。 官方地址:kubernetes.io/docs/refere…

  • 二进制包

    从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。

    Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署 Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

关于k8s的简要入门知识就介绍这么多,在后续的文章会陆续地对写上述的两种搭建方式的详细步骤,一篇文称带领你成功搭建属于自己的k8s集群。