有人能解释一下POD到POD在AKS中是如何工作的吗?从docs中,我可以看到它使用kube代理组件将流量发送到所需的POD。
但是有人告诉我,我必须使用clusterIP服务,并将所有相关的POD绑定在一起。那么什么是真正的流动呢?或者我漏掉了什么。下面有几个问题要更清楚。
问题:
非常感谢!
发布于 2021-01-23 15:10:03
对于吊舱到吊舱的通信,我们使用services。所以我们首先要明白,
为什么我们需要服务:实际上为我们做了什么服务--他们解析了dns名称,并给出了我们连接特定荚所需要的确切ip。现在,当您想要与pod通信时,您需要创建一个ClusterIP服务。
ClusterIP:在集群内部IP上公开服务。选择此值使服务只能从集群中访问。这是默认的ServiceType。对于ClusterIP服务,您不能从集群外部访问一个吊舱,因此,如果我们只想要在吊舱之间进行通信,我们就使用clusterip服务。
kube是在集群中的每个节点上运行的网络代理。
它维护节点上的网络规则。这些网络规则允许通过群集内部或外部的网络会话与Pods进行网络通信。每个服务维护iptables.And kube为每个服务处理这些ip表。因此,是的,kube是我们k8s集群中最重要的网络设置点.
网络政策在kubernetes是如何运作的:
有了这一点:
它处理豆荚之间的数据包传输,以及与外部世界的传输。通过在NAT中使用iptables实现负载平衡,它就像一个网络代理和运行在节点上的豆荚的负载平衡器。
kube进程位于Kubernetes网络和运行在该特定节点上的豆荚之间。它负责确保在分组的所有要素之间有效地保持沟通。当用户创建一个Kubernetes服务对象时,kube实例负责将该对象转换为在worker节点上设置的本地iptables规则中有意义的规则。iptables用于将分配给服务对象的虚拟IP转换为服务映射的所有pod。我希望你对kube代理的想法是明确的。
让我们看看它是如何工作的。这里我使用了headless service,这样我就可以连接一个特定的吊舱了。
---
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: default
spec:
clusterIP: None
selector:
app: my-test
ports:
- port: 80
name: rest
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-sts
spec:
serviceName: my-service
replicas: 3
selector:
matchLabels:
app: my-test
template:
metadata:
labels:
app: my-test
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
---这将创建3个吊舱。as:my-sts-0,my-sts-1,my-sts-2。现在,如果我们想连接到my-sts-0,只需使用这个dns名称my-sts-0.my-service.default.svc:80。该服务将解析dns名称,并将提供my-sts-0的确切podip。现在,如果您需要从my-sts-1到my-sts-0进行通信,只需使用这个dns名称即可。
模板类似于my_pod_name.my_Service_Name.my_Namespace.svc.cluster-domain.example,但是可以跳过集群-domain.示例部分。只有Service_Name.Namespace.svc才能正常工作。
https://stackoverflow.com/questions/65860425
复制相似问题