对 K8s 服务所在的位置以及 Istio 的 Envoy 代理所在的位置感到困惑?
Confused about where K8s Services reside and where Istio's Envoy Proxy Reside?
我很困惑 k8s 常规服务和 istio 的 sidecar 在哪里。
我最近了解了 istio 及其在 pod 中的 "sidecar/envoy/proxy"。而且我有信心说 Istio 的边车位于 pod 内。但是,k8s 常规服务位于何处以及首先从应用程序、服务或 Proxy/Sidecar?
联系谁?
我脑海中的图是这样的:
Services 是内部抽象 REST 对象,如:loadbalancer、clusterip、nodeport 等。它们的定义存储在 Kubernetes API 服务器(etcd)中。
服务通常由 Kube-proxy 实现,也通过匹配选择器和标签分配给端点。
每个节点都是 运行 由 etcd 管理的 kube-proxy 实例。服务大部分时间存储为 iptables 中的规则集。
服务网格中使用的 Istio 服务位于 Istio 控制平面中,可用作网关、出口、入口、虚拟服务等对象。
istio 控制平面还包括:
Citadel:用于密钥和证书管理
Pilot:向代理分发身份验证策略和安全命名信息
Mixer:管理授权和审计
正如您提到的,sidecar 代理(envoy 代理)被注入到应用程序容器旁边的 pods 中。
这是来自 istio documentation 的图表。
K8s服务是iptable规则。您可以通过 ssh-ing 进入节点并 运行:
来获取它们
sudo iptables-save | grep YOUR_SERVICE_NAME
Istio sidecar 容器是一个 Envoy
代理。我不知道你想用它做什么,但你可以这样做:
- 正在访问一个
Envoy
代理容器:
kubectl exec -it YOUR_POD_NAME -c istio-proxy sh
- 获取它的日志:
kubectl logs YOUR_POD_NAME -c istio-proxy
等等等等
我很困惑 k8s 常规服务和 istio 的 sidecar 在哪里。
我最近了解了 istio 及其在 pod 中的 "sidecar/envoy/proxy"。而且我有信心说 Istio 的边车位于 pod 内。但是,k8s 常规服务位于何处以及首先从应用程序、服务或 Proxy/Sidecar?
联系谁?我脑海中的图是这样的:
Services 是内部抽象 REST 对象,如:loadbalancer、clusterip、nodeport 等。它们的定义存储在 Kubernetes API 服务器(etcd)中。
服务通常由 Kube-proxy 实现,也通过匹配选择器和标签分配给端点。
每个节点都是 运行 由 etcd 管理的 kube-proxy 实例。服务大部分时间存储为 iptables 中的规则集。
服务网格中使用的 Istio 服务位于 Istio 控制平面中,可用作网关、出口、入口、虚拟服务等对象。
istio 控制平面还包括: Citadel:用于密钥和证书管理 Pilot:向代理分发身份验证策略和安全命名信息 Mixer:管理授权和审计
正如您提到的,sidecar 代理(envoy 代理)被注入到应用程序容器旁边的 pods 中。
这是来自 istio documentation 的图表。
K8s服务是iptable规则。您可以通过 ssh-ing 进入节点并 运行:
来获取它们sudo iptables-save | grep YOUR_SERVICE_NAME
Istio sidecar 容器是一个 Envoy
代理。我不知道你想用它做什么,但你可以这样做:
- 正在访问一个
Envoy
代理容器:
kubectl exec -it YOUR_POD_NAME -c istio-proxy sh
- 获取它的日志:
kubectl logs YOUR_POD_NAME -c istio-proxy
等等等等