Kubernetes集群
一个开源的容器编排平台,可以自动化在部署、管理和扩展容器化应用过程中涉及的许多手动操作。
概述
Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。 最初是由 Google 工程师作为 Borg 项目开发和设计的,后于 2014年开源、2015 年捐赠给 云原生计算基金会(CNCF)。
它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。
为啥自建k8s集群时首推k3s?
因为k3s既轻量节省计算资源,又完全兼容k8s,能胜任严苛的使用场景.
有多省资源?
只能说很省,像Linux比Windows一样明显节省很多。
下面简单介绍一下k3s资源占用
一个5节点的k3s集群(其中三个Etcd/ControlPannel两个Worker)
其中部署了24个工作负载(全是deployment)
这是CPU统计,看是不是有点eco模式的意思。
K3s简介
什么是 K3s?
K3s 是轻量级的 Kubernetes,也是一个完全兼容的 Kubernetes 发行版。 K3s 易于安装,仅需要 Kubernetes 内存的一半,所有组件都在一个小于 100 MB 的二进制文件中。 没学习那么多的 Kubernetes 高深知识也能上手使用. 它适用于:
- Edge
- IoT
- CI
- Development
- ARM
- 嵌入 K8s
为什么叫 K3s?
官网是这么说的: 我们希望安装的 Kubernetes 只占用一半的内存。Kubernetes 是一个 10 个字母的单词,简写为 K8s。Kubernetes 的一半就是一个 5 个字母的单词,因此简写为 K3s。K3s 没有全称,也没有官方的发音。
K8s简介
以下数据来自K8s官网
星际尺度
Google 每周运行数十亿个容器,Kubernetes 基于与之相同的原则来设计,能够在不扩张运维团队的情况下进行规模扩展。
永不过时
无论是本地测试,还是跨国公司,Kubernetes 的灵活性都能让你在应对复杂系统时得心应手。
处处适用
Kubernetes 是开源系统,可以自由地部署在企业内部,私有云、混合云或公有云,让您轻松地做出合适的选择。
什么是 Kubernetes 集群?
有效的 Kubernetes 部署称为集群,也就是一组运行容器的主机。您可以将 Kubernetes 集群可视化为两个部分:控制平面与计算设备(或称为节点)。
每个节点都是其自己的系统环境,并且可以是物理机或虚拟机。每个节点都运行由若干容器组成的容器集。
控制平面负责维护集群的预期状态,例如运行哪个应用以及使用哪个容器镜像。计算节点则负责应用和工作负载的实际运行。控制平面接受来自管理员(或 DevOps 团队)的命令,并将这些指令转发给计算节点。
Kubernetes 特性
自动化上线和回滚
Kubernetes 会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。如果出现问题,Kubernetes 会为你回滚所作更改。你应该充分利用不断成长的部署方案生态系统。
服务发现与负载均衡
你无需修改应用来使用陌生的服务发现机制。Kubernetes 为每个 Pod 提供了自己的 IP 地址并为一组 Pod 提供一个 DNS 名称,并且可以在它们之间实现负载均衡。
自我修复
重新启动失败的容器,在节点死亡时替换并重新调度容器, 杀死不响应用户定义的健康检查的容器, 并且在它们准备好服务之前不会将它们公布给客户端。
存储编排
自动挂载所选存储系统,包括本地存储、公有云提供商所提供的存储或者诸如 iSCSI 或 NFS 这类网络存储系统。
Secret 和配置管理
部署和更新 Secret 和应用程序的配置而不必重新构建容器镜像, 且不必将软件堆栈配置中的秘密信息暴露出来。
自动装箱
根据资源需求和其他限制自动放置容器,同时避免影响可用性。 将关键性的和尽力而为性质的工作负载进行混合放置,以提高资源利用率并节省更多资源。
批量执行
除了服务之外,Kubernetes 还可以管理你的批处理和 CI 工作负载,在期望时替换掉失效的容器。
IPv4/IPv6 双协议栈
为 Pod 和 Service 分配 IPv4 和 IPv6 地址
水平扩缩
使用一个简单的命令、一个 UI 或基于 CPU 使用情况自动对应用程序进行扩缩。
为扩展性设计
无需更改上游源码即可扩展你的 Kubernetes 集群。