k8s经典网站(2019年20+个Kubernetes工具盘点)

本文目录
2019年20+个Kubernetes工具盘点
Kube集群部署工具
Minikube为Kubernetes提供一套本地实验环境,允许用户在本地安装并试用Kubernetes。该工具可为您提供试用体验以决定是否选用Kubernetes,且能够通过简单易操作的方式在笔记本电脑的虚拟机(VM)内启动一个单节点Kubernetes集群。此外,Minikube亦适用于Windows、Linux以及OSX,并且只需短短5分钟,就能够让您对Kubernetes的主要功能有所了解。最后,仅需一行命令即可启动Minikube仪表盘。
链接:
***隐藏网址***
使用成本:免费
3. Kubeadm
Kubeadm是Kubernetes自版本1.4以来就默认使用的分发工具,该工具可帮助用户在现有的基础架构上体验Kubernetes的最佳实践。尽管如此,Kubeadm无法为开发人员配置基础设施。该工具的主要优势在于其可在任何环境下启动最小的可行Kubernetes集群。需要注意的是,Kubeadm内不含任何附加组件与网络设置,因此您需要手动或使用其他工具完成相关工具的安装。
链接:
***隐藏网址***
使用成本:免费
监控工具
4. Kubebox
Kubebox是一套用于Kubernetes集群的终端控制台,其能够让用户通过美观且经典的界面对集群实时状态进行管理与监控。Kubebox能够显示容器资源的使用情况、集群监控以及容器日志等。除此之外,用户还可借助Kubebox轻松导航到目标名称空间,并在目标容器中执行相关操作,借此以快速排除故障/恢复。
链接:
***隐藏网址***
使用成本:免费
5. Kubedash
Kubedash针对Kubernetes提供了一套性能分析UI。Kubedash汇集并总结不同来源的指标,并为管理员提供高级分析数据。Kubedash使用Heapster作为数据源,在默认情况下,该数据源会在所有Kubernetes集群中以服务形式运行,从而收集各个容器的量化指标。
链接:
***隐藏网址***
使用成本:免费
6. Kubernetes Operational View (Kube-ops-view)
Kube-ops-view是一款面向多个Kubernetes集群的只读系统仪表板。用户可以通过Kube-ops-view在集群、监控节点以及pod 健康 状况之间轻松导航,且其还能够为部分进程提供动画效果——例如pod的创建与终止。此外,类似于Kubedash,Kube-ops-view也将Heapster作为其数据源。
链接:
***隐藏网址***
使用成本:免费
测试工具
7. Kube-monkey
Kube-monkey是Netflix公司旗下ChaosMonkey项目的Kubernetes版本。Kube-monkey是一款遵循混沌工程原理的工具,其可以随机删除Kubernetes pod,检查服务是否具备抗失效能力并帮助维持相关系统的 健康 运转。Kube-monkey也可经由TOML文件完成配置,而TOML文件不仅能够终止指定的应用程序,还可以决定恢复策略的执行时间。
链接:
***隐藏网址***
使用成本:免费
8. K8s-testsuite
K8s-testsuite由两个Helm图表组合而成,适用于网络带宽测试与单个Kubernetes集群的负载测试。负载测试模拟了带有loadbots的简单网页服务器,这些服务器可在Vegeta基础上以Kubernetes微服务的形式运行。网络测试则是在内部连续对iperf3与netperf-2.7.0运行三次。这两项测试都会生成涵盖全部结果与指标的综合日志信息。
链接:
***隐藏网址***
使用成本:免费
9. Test-infra
Test-infra是一套用于Kubernetes测试与结果验证的工具集合。Test-infra包括多种仪表板,分别用于显示 历史 记录、汇总故障以及当前正在测试的内容。用户可通过创建自定义测试作业以增强Test-infra套件。此外,Test-infra可在使用Kubetest的不同供应商平台上,通过模拟完整的Kubernetes生命周期实现端到端Kubernetes测试。
链接:
***隐藏网址***
使用成本:免费
安全工具
10. Trireme
Trireme是一项灵活且直接的Kubernetes网络策略实现方案,其适用于任何Kubernetes集群,并允许用户管理不同集群内pod之间的流量。Tririme的主要优势在于其无需任何集中式策略管理,能够轻松实现Kubernetes中所部署的两种资源的彼此交互,并且无需配合任何复杂的SDN、VLAN标签以及子网(Trireme使用常规的L3-网络)。
链接:
***隐藏网址***
使用成本:免费
12. Twistlock
链接:
***隐藏网址***
使用成本:每份许可证每年1700美元起(试用版免费)。
实用的CLI工具
13. Cabin
Cabin可作为Kubernetes集群远程管理的移动仪表板。用户可通过Cabin快速管理应用程序、扩展部署,并通过Android或iOS设备对整个Kubernetes集群实施故障排查。对于Kubernetes集群的运营者而言,Cabin无疑是一款强大的工具,其能够在故障发生时执行快速有效的补救措施。
链接:
***隐藏网址***
使用成本:免费
14. Kubectx/Kubens
Kubectx是一款小型开源实用工具,其不仅能够增强Kubectl的功能表现,还能够轻松切背景,并同时与多个Kubernetes集群实现连接。另外,Kubens允许用户在Kubernetes命名空间之间进行导航。最后,这两款工具均可在bash/zsh/fishshell上提供自动补全功能。
链接:
***隐藏网址***
使用成本:免费
15. Kube-shell
Kube-shell能够在运行Kubectl时提升生产力。Kube-shell能够启用命令以实施自动补全与自动建议。此外,Kube-shell还能够提供有关执行命令的内嵌文档,其甚至还可以在输入错误时执行检索与纠正命令。因此,这是一款能够在Kubernetes控制台中改进性能与生产力的工具。
链接:
***隐藏网址***
使用成本:免费
开发工具
链接:
***隐藏网址***
使用成本:免费
Helm是一款适用于Kubernetes的软件包管理器。其与APT/Yum/Homebrew类似,但作用对象为Kubernetes。Helm使用Char实现运行,而Char是一套用于为分布式应用程序构建Kubernetes资源清单的归档集。用户可通过创建Helm图表来实现应用程序共享。此外,Helm允许用户创建可重复的构建模式,并通过简单方式管理Kubernetes清单。
链接:
***隐藏网址***
使用成本:免费
Keel允许用户自动执行Kubernetes部署更新,并能够在专用命名空间内以Kubernetes服务的形式进行启动。通过这样的组织方式,Keel可尽可能降低环境中的额外负载水平,并显著提升鲁棒性。此外,Keel可通过标签、注释以及图表强化Kubernetes服务。因此,用户只需为每个部署或Helm版本指定更新策略,即可在存储库中出现新的应用程序版本时,由Keel自动为其更新相关环境。
***隐藏网址***
使用成本:免费
持续集成
无服务器/函数工具
Kubeless是一款Kubernetes原生无服务器框架,能够在无需底层基础设施的前提下部署少量代码。Kubeless能够快速识别Kubernetes资源,并据此提供自动扩展、API路由、监控与故障排除等功能。Kubeless完全依赖于Kubernetes基元,因此Kubernetes用户也可以配合使用原生Kubernetes API服务器与API网管。
链接:
***隐藏网址***
使用成本:免费
Fission是一款针对Kubernetes的快速无服务器框架,专注于提升开发人员的生产力与性能水平。Fission能够运行于任何环境下的Kubernetes集群当中:笔记本电脑、任何公有云或私有数据中心。用户可使用Python、NodeJS、Go、C#或PHP编写函数,然后再使用Fission将相关函数部署到Kubernetes集群。
链接:
***隐藏网址***
使用成本:免费
原生服务发现
CoreDNS是一套由Go编写而成且用于执行DNS功能的插件。带有附加Kubernetes插件的CoreDNS可替换默认的Kube-DNS服务并实现针对基于KubernetesDNS服务发现的规范定义。除此之外,CoreDNS还能够监听经由UDP/TCP、TLS与gRPC传入的DNS请求
***隐藏网址***
使用成本:免费
原生可视化与控制
23. Kubernetes Dashboard
KubernetesDashboard是一款具备Kubernetes集群通用性且基于Web的用户界面。使用这样一套本机仪表板,用户可通过更简便的方式对Kubernetes集群实施故障排查与监控。为此,用户需要在机器与KubernetesAPI服务器之间创建一条安全的通道以实现相关仪表板的访问。这款原生KubernetesDashboard依赖于Heapster数据收集器,因此您需要预先在目标系统当中安装Heapster数据收集器。
***隐藏网址***
使用成本:免费
K8s的网络详解
其实操作到这里,有必要深入的了解K8s的网络运行机制和基本结构,否则当真的遇到问题的时候会比较郁闷。
首先,要理解K8s的用处其实是容器的编排和管理,最小组成其实不是容器,是pod,物理机或者虚拟机叫node,pod是基础单元,pod里可以有多个容器,也可以只有一个容器,同一个pod的容器彼此是共享网络和主机配置的,换句话说,彼此是可以直接localhost通信的,类似于同一台机器上进行通信,所以这里面是无所谓隔离和安全一说,对外而言就是一个环境,所以pod就是这个环境的业务实体。所以,第一个问题来了,同一个pod的不同容器可以位于不同的node上吗?当然不行,必须在同一个node上,因为共享主机和网络。那么怎么才能知道一个pod有多个容器?kubectl exec的时候是否可以指定需要运行的容器?当然可以,参考如下指令:
所以,这里可以忽略容器的概念,单单考虑pod,毕竟pod才是k8s最小的调度单元。那pod和pod是怎么通信的呢?
pod的通信离不开K8s的网络模型:
flannel组建一个大二层扁平网络,pod的ip分配由flannel统一分配,通讯过程也是走flannel的网桥。
每个node上面都会创建一个flannel0虚拟网卡,用于跨node之间通讯。所以容器直接可以直接使用pod id进行通讯。
跨节点通讯时,发送端数据会从docker0路由到flannel0虚拟网卡,接收端数据会从flannel0路由到docker0。
如果Pod是一组应用容器的集合,那Service是不是就没有意义了,他的意义在于当应用服务需要做负载、需要做全生命周期的跟踪和管理时就体现出来了,所以Service是一个抽象的概念,它定义了Pod逻辑集合和访问这些Pod的策略。
一个非常常见的场景,当一个Pod因为某种原因停止运行了,kubelet根据deployment的需求重新启动一个新的Pod来提供之前Pod的功能,但是flannel会给这个新的Pod分配一个新的IP,这会带来很大的Effort,应用服务的很多配置项都需要调整,如果有了Service呢,这就不是问题,看下Service的运行原理。
这张图解释了Service的运行机制,当Service A创建的时候,Service Controller和EndPoints Controller就会被触发更新一些资源,例如基于Service中配置的Pod的selector给每一个Pod创建一个EndPoint资源并存入etcd,kube-proxy还会更新iptables的chain规则生成基于Service的Cluster IP链路到对应Pod的链路规则,接下来集群内的一个pod想访问某个服务,直接cluster ip:port即可基于iptables的链路将请求发送到对应的Pod,这一层有两种挑选pod的算法,轮询(Round Robin)和亲和度匹配(Session Affinity)。当然,除了这种 iptabels的模式 ,还有一种比较原始的方式就是 用户态的转发 ,Kube-Proxy 会为每个 Service 随机监听一个端口 (Proxy Port),并增加一条 IPtables 规则。从客户端到 ClusterIP:Port 的报文都会被重定向到 Proxy Port,Kube-Proxy 收到报文后,通过 Round Robin (轮询) 或者 Session Affinity(会话亲和力,即同一 Client IP 都走同一链路给同一 Pod 服务)分发给对应的 Pod。
当然,新版本的k8s开始基于 ipvs来替换iptables 了,但是形式和iptables是类似的。
概念图可以参看:
这是最原始的方式,参看下图:
IPVS是 LVS 项目的一部分,是一款运行在 Linux Kernel 当中的 4 层负载均衡器,性能异常优秀。使用调优后的内核,可以轻松处理每秒 10 万次以上的转发请求。目前在中大型互联网项目中,IPVS 被广泛的用于承接网站入口处的流量。
K8s subPath
***隐藏网址***
description: "卷 内 子路径"
date: 2021.01.31 10:34
categories:
- K8s
tags:
keywords: subPath, volumeMount, volume
在 K8s 中, VolumeMount 是用来挂载定义好的存储卷的。
其中有个属性 subPath 是这样描述的:
subPath 所定义的路径,指的是 卷(Volume)内的子路径 ,用于将卷内 subPath 所对应的目录或文件,挂载到容器的挂载点。不指定此参数时,默认是将卷的根路径中内容进行挂载。
假设一个容器有多个路径需要挂载,如 YouTrack 需要挂载 data 、 conf 、 logs 和 backups 四个路径。
或由于某些原因,创建出来的存储卷根路径中不是空的,但容器要求所挂载的路径中不能有其他内容,如 mysql5.7 创建有状态服务问题 。
此时就有了 subPath 的用武之地。
以上面 YouTrack 为例,存储卷相关配置如下:
可以仅创建一个存储卷,然后将 YouTrack 持久化所需的四个路径,通过 subPath 挂载到该卷的不同子路径中。
在 K8s ConfigMap 一文中,我们也提到了 subPath 的用法,可以用来将 ConfigMap 中指定的 key 挂载到对应的挂载点,如:
即将名为 nginx-config-vol 的 volume 中的 nginx.conf key 对应内容,以文件形式挂载到容器中 /etc/nginx/nginx.conf 路径。
需注意:在 ConfigMap 中使用 subPath 将影响 ConfigMap 内容变化时的自动更新。
2021-10-这一篇 K8S(Kubernetes)我觉得可以了解一下!!!28
Kubernetes 是Google开源的分布式容器管理平台,是为了更方便的在服务器中管理我们的容器化应用。
Kubernetes 简称 K8S,为什么会有这个称号?因为K和S是 Kubernetes 首字母和尾字母,而K和S中间有八个字母,所以简称 K8S,加上 Kubernetes 比较绕口,所以一般使用简称 K8S。
Kubernetes 即是一款容器编排工具,也是一个全新的基于容器技术的分布式架构方案,在基于Docker的基础上,可以提供从 创建应用》应用部署》提供服务》动态伸缩》应用更新 一系列服务,提高了容器集群管理的便捷性。
大家可以先看一下,下面一张图,里面有我们的 mysql,redis,tomcat,nginx 等配置信息,如果我们想要安装里面的数据,我们需要一个一个手动安装,好像也可以,反正也就一个,虽然麻烦了一点,但也不耽误。
但是随着技术的发展和业务的需要,单台服务器已经不能满足我们日常的需要了,越来越多的公司,更多需要的是集群环境和多容器部署,那么如果还是一个一个去部署,运维恐怕要疯掉了,一天啥也不干就去部署机器了,有时候,可能因为某一个环节出错,要重新,那真的是吐血。。。。。,如下图所示:
如果我想要部署,以下几台机器:
如果要一个一个去部署,人都要傻掉了,这什么时候是个头,如果是某里巴的两万台机器,是不是要当场提交辞职信,所以 K8S 就是帮助我们来做这些事情的,方便我们对容器的管理和应用的自动化部署,减少重复劳动,并且能够自动化部署应用和故障自愈。
并且如果 K8S 对于微服务有很好的支持,并且一个微服务的副本可以跟着系统的负荷变化进行调整,K8S 内在的服务弹性扩容机制也能够很好的应对突发流量。
Docker-Compose 是用来管理容器的,类似用户容器管家,我们有N多台容器或者应用需要启动的时候,如果手动去操作,是非常耗费时间的,如果有了 Docker-Compose 只需要一个配置文件就可以帮我们搞定,但是 Docker-Compose 只能管理当前主机上的 Docker,不能去管理其他服务器上的服务。意思就是单机环境。
Docker Swarm 是由Docker 公司研发的一款用来管理集群上的Docker容器工具,弥补了 Docker-Compose 单节点的缺陷, Docker Swarm 可以帮助我们启动容器,监控容器的状态,如果容器服务挂掉会重新启动一个新的容器,保证正常的对外提供服务,也支持服务之间的负载均衡。而且这些东西 Docker-Compose 是不支持的,
Kubernetes 它本身的角色定位是和 Docker Swarm 是一样的,也就是说他们负责的工作在容器领域来说是相同的部分,当然也要一些不一样的特点, Kubernetes 是谷歌自己的产品,经过大量的实践和宿主机的实验,非常的成熟,所以 Kubernetes 正在成为容器编排领域的领导者,其 可配置性、可靠性和社区的广大支持,从而超越了 Docker Swarm ,作为谷歌的开源项目,它和整个谷歌的云平台协调工作。
在下图中,是K8S的一个集群,在这个集群中包含三台宿主机,这里的每一个方块都是我们的物理虚拟机,通过这三个物理机,我们形成了一个完整的集群,从角色划分,可以分为两种
打一个比较形象的比喻,我们可以把Pod理解成一个豆荚,容器就是里面的豆子,是一个共生体。
Pod里面到底装的是什么?
具体怎么部署Pod里面的容器,是按照我们项目的特性和资源的分配进行合理选择的。
pause容器:
Pause容器 全称infrastucture container(又叫infra)基础容器,作为init pod存在,其他pod都会从pause 容器中fork出来,这个容器对于Pod来说是必备的
一个Pod中的应用容器共享同一个资源:
在上图中如果没有 pause容器 ,我们的Nginx和Ghost,Pod内的容器想要彼此通信的话,都需要使用自己的IP地址和端口,才可以彼此进行访问,如果有 pause容器 ,对于整个Pod来说,我们可以看做一个整体,也就是我们的Nginx和Ghost直接使用localhost就可以进行访问了,他们唯一不同的就只是端口,这里面可能看着觉得比较简单,但其实是使用了很多网络底层的东西才实现的,感兴趣的小伙伴可以自行了解一下。
在 Kubernetes 中,每个Pod都会被分配一个单独的IP地址,但是Pod和Pod之间,是无法直接进行交互的,如果想要进行网络通信,必须要通过另外一个组件才能交流,也就是我们的 Service
Service 是服务的意思,在K8S中 Service 主要工作就是将多个不同主机上的Pod,通过 Service 进行连通,让Pod和Pod之间可以正常的通信
我们可以把 Service 看做一个域名,而相同服务的Pod集群就是不同的ip地址, Service 是通过 Label Selector 来进行定义的。
使用NodePort提供外部访问,只需要在每个Node上打开一个主机的真实端口,这样就可以通过Node的客户端访问到内部的Service。
Label 一般以 kv的方式附件在各种对象上,Label 是一个说明性的标签,它有着很重要的作用,我们在部署容器的时候,在哪些Pod进行操作,都需要根据Label进行查找和筛选,我们可以理解Label是每一个Pod的别名,只有取了名称,作为K8S的Master主节点才能找到对应的Pod进行操作。
用户通过 Kubectl 提交一个创建 Replication Controller 请求,这个请求通过 API Server 写入 etcd 中,这个时候 Controller Manager 通过 API Server 的监听到了创建的命名,经过它认真仔细的分析以后,发现当前集群里面居然还没有对应的Pod实例,赶紧根据 Replication Controller 模板定义造一个Pod对象,再通 过Api Server 写到我们 etcd 里面
到下面,如果被 Scheduler 发现了,好家伙不告诉我???,无业游民,这家伙一看就不是一个好人啊,它就会立即运行一个复杂的调度流程,为这个新的Pod选一个可以落户的Node,总算有个身份了,真是让人操心,然后通过 API Server 将这个结果也写到etcd中,随后,我们的 Node 上运行的小管家 Kubelet 进程通过 API Server 检测到这个 新生的小宝宝——“Pod”,就会按照它,就会按照这个小宝宝的特性,启动这个Pod并任劳任怨的负责它的下半生,直到Pod的生命结束。
然后我们通过 Kubectl 提交一个新的映射到这个Pod的Service的创建请求, Controller Manager 会通过Label标签查询到相关联的Pod实例,生成Service的Endpoints的信息,并通过 API Server 写入到etcd中,接下来,所有 Node 上运行的Proxy进程通过 Api Server 查询并监听 Service对象 与其对应的 Endpoints 信息,建立一个软件方式的负载均衡器来实现 Service 访问到后端Pod的流量转发功能。
kube-proxy: 是一个代理,充当这多主机通信的代理人,前面我们讲过Service实现了跨主机、跨容器之间的网络通信,在技术上就是通过 kube-proxy 来实现的,service是在逻辑上对Pod进行了分组,底层是通过 kube-proxy 进行通信的
kubelet: 用于执行K8S的命令,也是K8S的核心命令,用于执行K8S的相关指令,负责当前Node节点上的Pod的创建、修改、监控、删除等生命周期管理,同时Kubelet定时“上报”本Node的状态信息到API Server里
etcd: 用于持久化存储集群中所有的资源对象,API Server提供了操作 etcd的封装接口API,这些API基本上都是对资源对象的操作和监听资源变化的接口
API Server : 提供资源对象的操作入口,其他组件都需要通过它提供操作的API来操作资源数据,通过对相关的资源数据“全量查询”+ “变化监听”,可以实时的完成相关的业务功能。
Scheduler : 调度器,负责Pod在集群节点中的调度分配。
Controller Manager: 集群内部管理控制中心,主要是实现 Kubernetes 集群的故障检测和恢复的自动化工作。比如Pod的复制和移除,Endpoints对象的创建和更新,Node的发现、管理和状态监控等等都是由 Controller Manager 完成。
到这里K8S的基本情况我们就讲解完毕了,有喜欢的小伙伴记得 点赞关注 ,相比如Docker来说K8S有着更成熟的功能,经过谷歌大量实践的产物,是一个比较成熟和完善的系统。
关于K8S大家有什么想要了解或者疑问的地方欢迎大家留言告诉我。
我是牧小农,一个卑微的打工人,如果觉得文中的内容对你有帮助,记得一键三连,你们的三连是小农最大的动力。

本文相关文章:
matlab2017和2018哪个好(发现matlab2018a占内存较多,下载了2016a的版本,这两个版本有什么不一样的区别吗)
2026年10月10日 21:10
animate软件下载安装(2018Animate CC安装不起,点安装没有说注册直接就是安装界面)
2026年10月8日 12:30
log4j2自定义日志文件名(2019-07-03 log4j2 自定义ElasticSearch Appender)
2026年9月27日 10:00
svg导入ppt(mac上装了office2016另存为为什么没有增强型图元件)
2026年9月10日 10:50
keygen使用方法(cad2014注册机怎么用,注册机使用方法)
2026年8月28日 06:00
sqlserver2005无法启动(安装SQLServer2005过程中提示服务器无法启动)
2026年8月19日 03:40
西班牙vs德国前瞻:德国队(如何评价2010年世界杯西班牙vs德国的小组赛)
2026年7月16日 05:10
access2010基础教程(请教计算机大佬!尤其是access2010大佬!谢谢!)
2026年7月10日 15:50
更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40





