Kubernetes一词来源于希腊语,翻译来的意思就是舵手或者船长的意思,而它的logo也是很符合这个词的
至于k8s则是通过将ubernetes这8个字母替换为8而导出的缩写
Kubernetes是什么?
k8s是Google开源的容器集群管理系统(思想来源于谷歌内部系统Borg)。在Docker技术的基础上,为容器化的应用提供以下一系列功能来提高大规模容器集群管理的便捷性:
- 服务发现
- 负载均衡
- 自动发布与回滚
- 资源调度
- 弹性伸缩
- 自动恢复
- 健康检查
- 。。。
现在的k8s托管于CNCF基金会,也是CNCF的第一个项目。下面是CNCF的全景图
Kubernetes的架构组成
k8s由 Master 和 Node 两种节点组成,而这两种角色分别对应着控制节点和计算节点
其中最上方是UI和CLI代表了两种操控k8s的方式,即dashboar和命令行方式
Master节点是集群中的控制节点,它是由以下几个独立组件组合而成的:
- 负责 API 服务的 kube-apiserver
- 提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更
- 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据
- 负责调度的 kube-scheduler
- 负责分配调度 Pod 到集群内的节点上,它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点
- 调度器需要充分考虑诸多的因素:
- 公平调度
- 资源高效利用
- QoS
- affinity 和 anti-affinity
- 数据本地化
- 内部负载干扰
- deadlines
- 负责容器编排的 kube-controller-manager
- 由 kube-controller-manager 和 cloud-controller-manager 组成,是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态
- 整个集群的持久化数据,则由 kube-apiserver 处理后保存在 Etcd中
- 分布式存储Etcd
- 分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障
计算节点上是运行所有业务容器的节点
- 在 Kubernetes 项目中,每个节点上都运行一个 kubelet 服务进程,默认监听 10250 端口,接收并执行 master 发来的指令,管理 Pod 及 Pod 中的容器。每个 kubelet 进程会在 API Server 上注册节点自身信息,定期向 master 节点汇报节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源
- 每台机器上都运行一个 kube-proxy 服务,它监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡
除了主节点和计算节点还有一些组件是全局通用的
- 负责整个集群dns服务的CoreDNS
- 提供跨 Region 跨服务商 K8s 集群服务的集群联邦(Federation)
- Kubernetes 的命令行工具(CLI)kubectl
Kubernetes的组件通信
以用户需要操作一个pod为例:
- 当用户在k8s的ui界面或者是通过命令行与APIServer交互
- APIServer首先会把用户的命令存储到etcd中
- 调度器kube-scheduler会通过watch机制从APIServer获取到需要调度一个pod的信息
- kube-scheduler得到信息后根据自身的内存状态进行一次决策,然后再通知到APIServer
- APIServer得到kube-scheduler的通知同样先把命令存储到etcd中
- 相应节点的kubelet通过watch机制得知需要操作的pod去调用相应的存储插件、网络插件来操作响应的pod
推荐阅读
- SpringCloud学习系列汇总
- 为什么一线大厂面试必问redis,有啥好问的?
- 多线程面试必备基础知识汇总
- Java集合源码分析汇总-JDK1.8
- Linux常用命令速查-汇总篇
- JVM系列文章汇总
- MySQL系列文章汇总
- RabbitMQ系列文章汇总
博客所有文章首发于公众号《Java学习录》转载请保留
扫码关注公众号即可领取2000GJava学习资源
分享到:
相关推荐
kubernetes.tar.gz
atlassian-kubernetes:Atlassian和Kubernetes的所有东西
同时,我们还需要准备一些必要的东西,例如完成operator的部署、需要一个Ops/Cloud Manager等。 MongoDB on Kubernetes技术解决方案提供了一种快速、灵活和高效的方式来部署和管理MongoDB数据库在Kubernetes集群中...
非常好的kubernetes学习资源,而且非常清晰,讲解很好,很实用,了解了以前没有学到的东西。感谢!
Service的全局唯一虚拟IP地址称为ClusterIP,但这个ClusterIP只能实现集群内部的访问(东西向服务)。对于需要从外部IP访问的服务(南北向服务),Kubernetes提供了NodePort、LoadBalancer和Ingress三种方案。 Node...
使用 Kubernetes API 构建东西 Kubernetes 是一个强大的平台,您可以在上面(并与之一起)创建各种工具和客户端。 幸运的是,在针对 Kubernetes API 进行编程时有很多选择。 不幸的是,这些选项可能会被大量 API ...
容器技术的问题域涉及面非常广,除了常规的计算力排程、负载均衡、部署升级、服务发现、日志与监控,这些东西都要以全新的方式来解决。 数据中心操作系统 数据中心操作系统是一个非常开放性的问题。实践给数据中心...
在Kubernetes中创建MongoDB前,我们需要准备一些东西:完成operator的部署,需要一个Ops/Cloud Manager,生成Ops/Cloud Manager中的用户以及public API key,同时基于这个用户以及public API key生成Kubernetes中的...
只需在项目内部添加以下依赖项,便可以免费获得这些东西: < groupId>io.fabric8 < artifactId>spring-cloud-starter-kubernetes ${latest.version} 然后,您可以通过以下方式将客户端注入到您的云中: @...
prometheus docker 容器监控 k8s kubernetes 好东西 岗岗的
沃彻(Wotcher)是一个基于Go语言构建的工具,主要与Kubernetes生态系统相关。Kubernetes,通常简称为K8s,是目前最流行的容器编排系统,用于自动化容器化应用的部署、扩展和管理。它由Google开源,并在云原生计算...
在探索用于Kubernetes的工具时,我需要使用架构来描述定义文件,并且一直在寻找不需要安装kubectl或类似工具甚至不需要Kubernetes安装的东西。 事实证明, 规范包含此信息,但对于可能只需要原始工具而言,格式...
Kubernetes、k8s、docker学习资料 新手入门推荐看.。 详细介绍了Docker和K8s相关的概念。 东西挺全的,慢慢学习。
raspi-cluster(由于k3s而现在有了Kubernetes!) 什么? 不久前,我决定构建一个小的板集群。 从那以后,我已经升级到Pi 2板,并且该存储库用于版本设计说明,配置文件和其他版本。 为什么? 我希望在分布式处理...
在Kubernetes环境中,东西向流量是指服务内部的通信,南北向流量是指外部与服务的交互。Istio通过Ingress Gateway处理南北向流量,而Mesh Gateway(Sidecar模式)则用于管理服务间的(东西向)通信。 4. **Egress ...
Ansible-atlassian-kubernetes.zip,所有的东西亚特拉西安和库伯内特萨塔西的库伯内特,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
分叉仓库编写有关部署,服务,入口和configmap以及您认为需要的其他任何东西的k8s规范提供脚本以运行部署确保使用有关如何构建,部署和测试的说明来更新此准备好后提交PR成功因素可以通过在普通Kubernetes中调用...
—阅读什么以了解有关Kubernetes的更多信息 贡献 使用您的书,讲习班,教程等编辑content/post/kubernetesreadme/index.md 。 请考虑您的材料对用户有多高级。 我尝试将容易消耗的东西放在顶部,将更复杂/特定的...