以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
序言
自本文开始,笔者将对 Kubernetes 相关知识进行专题分享,更新周期较长,欢迎订阅专栏及时获取最新文章。
Kubernetes 是什么?
Kubernetes 在希腊语中意为 “舵手”,常简称为 K8s(因为 K 和 s 之间有 8 个字符)。
Kubernetes 由 Google 基于 Borg 开发并于 2014 年开源,是一个可移植、可扩展、生产级别的容器编排调度引擎,用于将容器化的应用程序组合成逻辑单元,并对其进行自动部署、自动伸缩、服务发现和资源管理等。
Kubernetes 作为云原生应用的基石以及 CNCF(Cloud Native Computing Foundation)最重要的组件之一,可以看作是一个云操作系统,使用共享网络将多个主机组成统一的集群。Kubernetes 通过提供一套规范,声明式地描述集群架构、定义服务状态,并自动将集群、服务维持在预期状态。
Kubernetes 主要特性
1、自动更新与回滚
Kubernetes 可以将应用程序或其配置的变动按步骤更新,同时监视应用程序运行状态以确保不会同时终止所有实例,并支持在出现问题时回滚所做变动。
2、服务发现与负载均衡
Kubernetes 可以为每一个应用程序实例(Pod)提供独立 IP 地址,为同一组应用程序实例提供一个 DNS A 记录用于服务发现,并将访问流量负载均衡到这些应用程序实例上。
3、自我修复
Kubernetes 可以自动重启故障容器、在节点宕机时重新调度容器、杀死未通过健康检查的容器,并且在容器就绪之前不会接收和处理客户端请求。
4、存储编排
Kubernetes 可以为容器自动挂载所选存储系统,包括本地磁盘存储、云存储、NFS 网络存储等。
5、配置管理
Kubernetes 可以自动部署和更新 Secret 和 ConfigMap 资源,将配置文件和非明文秘钥存储在集群中,在需要时提供给容器,而无需重新构建容器镜像。
6、资源利用
Kubernetes 可以基于容器的资源需求和其他限制自动调度容器,同时避免影响服务可用性。将不同服务质量等级的工作负载进行混合调度,可以提高资源利用率、节省更多资源。
7、批量执行
Kubernetes 可以管理批处理工作负载和 CI 工作负载,在需要时自动替换失效的容器。
8、水平伸缩
Kubernetes 可以基于容器的 CPU 使用情况等,对应用程序实例的数量进行横行动态调整。
9、IPv4 / IPv6 双协议栈
Kubernetes 可以为应用程序实例分配 IPv4 和 IPv6 地址。
10、扩展性设计
Kubernetes 可以为集群增加新特性,而无需更新源代码,具有很强的扩展性。
11、安全性设计
Kubernetes 可以提供强大的认证和授权管理,允许管理员和用户对集群进行细粒度的访问控制。