「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」
官方文档地址:kubernetes.io/zh/docs/hom…
本文是新开的一个专栏,用于专门学习k8s的知识,从入门到逐渐熟练的使用。
一、k8s简介
Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在 Kubernetes 中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
二、主要功能特点
k8s主要有以下的功能特点:
-
自动装箱
基于容器对应用运行环境的资源配置,自动部署应用容器。
-
自我修复(自愈能力)
-
容器层面:当容器因错误失败时,k8s会对容器进行重启。
-
节点层面:当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度。
-
容器健康功能检测:当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。
-
-
水平扩展
基于 CPU 等资源使用情况,我们可以通过使用简单的命令、用户 UI 界面,对应用容器进行规模扩大或规模剪裁。
-
服务发现
自身提供服务发现机制,用户不需使用额外的服务发现机制,就能够基于其自身能力实现服务发现和负载均衡。
-
滚动更新
对于应用程序的版本变更,对于运行该应用的容器,可以进行一次性或批量式更新。
-
版本回退
应用程序部署后出现问题,对于运行该应用的容器,可以进行历史版本即时回退。
-
秘钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
-
存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。
存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务。
-
批处理
提供一次性任务或周期定时任务,满足批量数据处理和分析的场景。
三、集群架构节点及角色
-
Master Node
k8s 集群控制节点,对集群进行调度管理,接受集群外用户到集群的操作请求;
Master Node 由
API Server、Scheduler、ClusterState Store(ETCD 数据库)和Controller MangerServer所组成。 -
Worker Node
集群工作节点,运行用户业务应用容器;
Worker Node 包含
kubelet、kube proxy和ContainerRuntime; -
网络传输
-
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集群。