Kubernetes很简单,你可以用卷曲探索它

2021-04-14 07:13:19

...而且因为有这么多的Config Yaml,我们需要大型工具箱只是为了处理该配置。 我想说服你归咎于相反方向的箭头! 因为它是简单且一致的,我们可以管理比VEVER可以管理的更多配置! 现在我们可以管理更多配置,我们可以构建occultoveration系统。 h 配置自己可能是复杂的。 所以在这篇文章中,我要跳过Configs。 我将纯粹关注API机械以及如何探索atapi。 要解释简单的天才的想法,让我们从UNIX的简单Genius理念开始: 或者更精确,一切都是文本流。 UNIX程序读取和编写的文本流。 文件系统是用于查找要读取的文本流的API。 不是所有这些文本流是文件! 让我们仔细看看/ proc。 这是一个关于它的朱莉娅埃文斯。

您可以通过查看/ proc来了解系统上运行的内容,如:

一切都是HTTP的资源。我们可以探索几个HTTP获取命令的每个Kubernetes。

$善良创建Clustercreating Cluster"亲切的" ...✓确保节点图像(善意/节点:v1.19.1)🖼✓准备节点📦✓写入配置📜✓启动控制平面🕹️✓安装CNI🔌✓安装StorageClass💾将kubectl上下文设置为"种类和#34;您现在可以使用群集:Kubectl Cluster-Info - Context种类乐趣愉快的一天! 👋$ kubectl proxy&开始在127.0.0.0.1:8001服务

Kubectl Proxy是处理我们证书的服务器,以便我们不担心卷曲的验证令牌。

Kubernetes API具有比/ proc更多的层次结构。它将其拆分为verversion和命名空间和资源类型。 API路径格式如下所示:

在一个新鲜的群集上,kube-system命名空间应该有一些已经运行的豆荚,我们可以查看。让我们列出所有系统进程inour集群:

$ curl -s http:// localhost:8001 / api / v1 / namespaces / kube-system / pods | Head-n 20 {"" podlist"," apiersion&#34 ;:" v1&#34 ;,"元数据&#34 ;: {" selflink&#34 ;:" / api / v1 /命名空间/ kube-system / pods"" ResourceVersion&#34 ;:" 1233" },"物品&#34 ;: [{"元数据&#34 ;: {"名称&#34 ;:" coredns-f9fd979d6-5zxtx&#34 ;," generateName& #34 ;:" coredns-f9fd979d6 - "和#34;名称空间&#34 ;:" kube-system&#34 ;," selflink&#34 ;:" / api / v1 /命名空间/ kube-system / pods / coredns-f9fd979d6-5zxtx&#34 ;," Uid&#34 ;:" a30e70cc-2b53-4511-a5de-57c80e5b68ad&#34 ;,&# 34; ResourceVersion&#34 ;:" 549&#34 ;,#34; CreationTimestamp&#34 ;:" 2021-03-04t15:51:21z&#34 ;,"标签" :{" k8s-app&#34 ;:" kube-dns&#34 ;," pod-templation-hash&#34 ;:" f9fd979d6"

这是很多文字!我们可以使用JQ拔出对象的名称。

/ pods端点列出了所有进程,如ls / proc。如果我们希望在特定进程上努力,我们可以查询/ pods / pod_name。

$ curl -s http:// localhost:8001 / api / v1 /命名空间/ kube-system / pods / kube-apiserver种类控制平面|头-N 10 {"&#34 ;:" pod&#34 ;," apiersion&#34 ;:" v1""元数据&#34 ;: {"姓名&#34 ;:" kube-apiserver种类控制平面&#34 ;,"命名空间&#34 ;:" kube-system&#34 ;,&#34 ; Selflink&#34 ;:" / api / v1 /命名空间/ kube-system / pods / kube-apiserver - 种类控制平面"" Uid&#34 ;:" a8f893b7 -1cdb-48fd-9505-87d71c81adcb&#34 ;," couresourceversion&#34 ;:" 458&#34 ;," creationtimestamp&#34 ;:" 2021-03-04t15:51 :17z&#34 ;,

以上所有的东西都可以用kubect来完成。 kubectl提供了一个令人友善的界面。但是,如果您有史以来想知道什么是apis kubectl,你可以用-v 6运行它:

$ kubectl get -v 6-n kube-system pods kube-apiserver-control-planei0304 12:47:59.687088 3573879 Loader.go:375] Configo来自文件:/home/nick/.kube/configi0304 12:47 :59.697325 3573879 round_trippers.go:443] get https://127.0.0.1:44291/api/v1/namespaces/kubeS -system/pods/kube-apiserver-kind-control-plane 200确定在5 millisecondsname准备状态Restarts agekube -apiserver-ind-control-plane 1/1运行0 116m

这一点不是你应该扔掉kubectl以支持kubernetes的卷曲。就像你不应该扔掉ps,赞成ls / proc。

但是我发现障碍像这样的Kubernetes是有助于想到ITA一个基于一对直接原则的过程管理系统:

以与我们可以一起使用UNIX工具(如JQ)的方式(如JQ),我们可以将Kubernetes对象连接并将其与现有物体组合起来。 有时候他们是愚蠢的! 就像在这个ellenkörbes谈论如何构建无所畏惧的机器。 在未来的帖子中,我想谈谈如何编写使用这些APISEFFECTIVE的代码。 以及我们如何倾向于这些想法的沉思。 敬请关注! 休息isan旧的想法(以互联网时间的规模测量)。 我喜欢Athekubernetes的休息就是它不太侧重于“我们如何使Surenew API端点我们定义遵守REST福音”,更专注于“我们从数据类型中安静API?” ↩