私信  •  关注

Crou

Crou 最近创建的主题
Crou 最近回复了
5 年前
回复了 Crou 创建的主题 » 使用docker for mac从pod获取CPU利用率

看起来您缺少metrics服务器。

HorizontalPodAutoscaler通常从一系列聚合的API获取度量( metrics.k8s.io , custom.metrics.k8s.io ,和 external.metrics.k8s.io ). 这个 API通常由metrics服务器提供,需要单独启动。见 metrics-server 以获得指示。HorizontalPodAutoscaler还可以直接从Heapster获取度量。

kubectl get --raw /apis/metrics.k8s.io/v1beta1 .

metrics-server 复制回购协议然后运行 kubectl create -f deploy/1.8+/

Docker Kubernetes (Mac) - Autoscaler unable to find metrics .

5 年前
回复了 Crou 创建的主题 » network bridge'docker0'在k8s中扮演什么角色?

Docker和Kubernetes有两种网络模型。

Docker模型

默认情况下,Docker使用主机专用网络。它创建了一个虚拟桥,称为 docker0 默认情况下,从中定义的一个专用地址块分配子网。 RFC1918 为了那座桥。对于Docker创建的每个容器,它分配一个虚拟以太网设备(称为 veth )它附在桥上。兽医被映射为 eth0 在容器中,使用Linux命名空间。集装箱内 种族歧视 接口被赋予来自网桥地址范围的IP地址。

结果是,只有在同一台机器上,DOCKER容器才能与其他容器对话。 (因此也是同样的虚拟桥)。 不同机器上的容器不能互相接触。 -事实上,它们最终可能拥有完全相同的网络范围和IP地址。

kubernetes模型

Kubernetes对任何网络实现提出了以下基本要求(除非有任何有意的网络分段策略):

  • 所有容器都可以与所有其他容器进行通信,而不需要NAT。
  • 所有节点都可以与所有容器通信(反之亦然),不需要NAT。
  • 一个容器将自己视为的IP与其他人将其视为的IP相同

Kubernetes在 Pod 作用域-中的容器 豆荚 共享他们的网络名称空间-包括他们的IP地址。这意味着 豆荚 都能到达对方的端口 localhost . 这确实意味着 豆荚 必须协调端口使用,但这与虚拟机中的进程没有区别。这称为“每个pod的ip”模型。这是使用Docker作为一个“pod容器”实现的,它保持网络名称空间打开,而“app容器”(用户指定的东西)将该名称空间与Docker的连接起来。 --net=container:<id> 功能。

与Docker一样,可以请求主机端口,但这会减少到一个非常小的操作。在这种情况下,将在主机上分配端口 Node 交通会被转移到 豆荚 . 这个 豆荚 它本身对主机端口的存在或不存在是盲目的。

为了将平台与底层网络基础设施集成,kubernetes提供了一个名为 Container Networking Interface (CNI) . 如果满足了KubNetes的基本要求,供应商可以使用他们喜欢的网络堆栈,通常使用覆盖网络来支持。 多子网 多AZ 集群。

下面展示了如何通过 Flannel 它很受欢迎 CNI .

flannel

您可以阅读更多关于其他CNI的 here . kubernetes方法在 Cluster Networking 博士学位。我也推荐阅读 Kubernetes Is Hard: Why EKS Makes It Easier for Network and Security Architects 这就解释了 法兰绒 工作,也是另一个 article from Medium

希望这能回答你的问题。