【k8s】什么是k8s


这是我父亲 日记里的文字

这是他的生命 留下留下来的散文诗

几十年后 我看着泪流不止

可我的父亲已经 老得像一个影子

🎵 许飞《父亲写的散文诗》


Kubernetes,常被简称为K8s,是一个开源的容器编排平台,最初由Google设计并开发,现在由Cloud Native Computing Foundation(CNCF)维护。Kubernetes旨在帮助用户自动化部署、扩展和管理容器化应用程序。

Kubernetes 的核心概念

1. 节点(Node)

节点是Kubernetes集群中的一台虚拟机或物理机,每个节点都包含运行Pod所需的必要服务,包括容器运行时(如Docker)、Kubelet和Kube-proxy。

2. Pod

Pod是Kubernetes中的最小部署单元,一个Pod可以包含一个或多个容器。这些容器共享网络命名空间、存储卷和配置数据。Pod中的所有容器一起作为一个应用实例运行。

3. 控制器(Controller)

控制器是Kubernetes中的核心组件之一,用于管理Pod和其他对象的状态。常见的控制器包括:

  • Deployment:管理无状态应用的Pod副本。
  • StatefulSet:管理有状态应用的Pod副本,确保Pod的顺序和持久性。
  • DaemonSet:确保所有或一些节点上运行一个Pod副本。
  • ReplicaSet:确保指定数量的Pod副本在集群中运行。
4. 服务(Service)

服务是Kubernetes中一种稳定的网络端点,用于将一组Pod暴露为网络服务。服务定义了Pod的逻辑集合,并提供了负载均衡和服务发现功能。

5. 配置和存储
  • ConfigMap:用于存储非机密的配置数据。
  • Secret:用于存储敏感信息,例如密码、OAuth令牌和SSH密钥。
  • PersistentVolume(PV):集群中预配置的存储资源。
  • PersistentVolumeClaim(PVC):用户对存储资源的请求。

Kubernetes 的架构

1. 主节点(Master Node)

主节点负责管理集群,包括调度、控制和监视所有的工作节点。主要组件包括:

API Server:集群的前端,所有的操作都通过API Server进行。

Scheduler:负责将Pod分配到适当的节点上。

Controller Manager:运行控制器以调节集群的状态。

etcd:分布式键值存储,用于存储集群的所有数据。

2. 工作节点(Worker Node)

工作节点运行Pod,并由主节点管理。主要组件包括:

  • Kubelet:负责在节点上运行和管理Pod。
  • Kube-proxy:负责维护网络规则,允许Pod间通信。
  • Container Runtime:运行和管理容器的环境,如Docker、containerd等。

Kubernetes 的功能和优势

1. 自动化部署和管理

Kubernetes可以自动化应用程序的部署、管理和扩展。通过定义期望状态,Kubernetes可以自动调整实际状态与期望状态一致。

2. 水平扩展

Kubernetes可以根据负载情况自动扩展或缩减应用程序的实例数量,以保证应用程序的高可用性和性能。

3. 负载均衡

Kubernetes可以自动分配网络流量到不同的Pod实例,提供负载均衡功能,确保应用程序的可靠性和可用性。

4. 自愈能力

当Pod或节点出现故障时,Kubernetes可以自动重启或重新调度这些实例,以确保应用程序的持续运行。

5. 滚动更新和回滚

Kubernetes支持无中断的应用程序更新,同时提供回滚机制,确保在出现问题时能够快速恢复到稳定版本。

结论

Kubernetes作为一个强大且灵活的容器编排平台,已经成为现代应用程序部署和管理的标准。它提供了丰富的功能和工具,使得开发者和运维人员能够高效地管理复杂的容器化应用环境。如果你正在寻找一种可靠的方式来自动化管理容器,Kubernetes无疑是一个值得深入学习和应用的选择。

相关推荐
老司机张师傅25 分钟前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
登云时刻1 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(一)
redis·kubernetes·bootstrap
运维&陈同学2 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
Code_Artist5 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
Eternal-Student5 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
码农小丘5 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
灼烧的疯狂6 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
wenyue11217 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
梅见十柒9 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生