我正在GCP上设置2个VPC,我在每个上都设置了kubeadm,我们称它们为kubemaster和kubenode1。所以我在kubemaster和kubenode1上运行了kubeadm:
kubeadm init
on kubemaster kubeadm join
在kubenode1上当我尝试kubectl apply -f (a deployment which contains a pod with simple webapps inside)
和kubectl apply -f (a NodePort type of Service which target the deployment port)
此后,我只是从浏览器(不是在本地计算机上,而是在GCP上)从浏览器访问webapp,这就像我在minikube上尝试过的一样(我也使用与上面相同的kubectl设置minikube)。我进行了一些搜索,关于Ingress和网络层(kubernetes网站示例中的法兰绒)的人很多。
我的问题是这些Ingress和法兰绒是什么?如果我只想运行我的web应用程序,则哪一个是必需的,还是根本没有必要的?彼此如何与他人对抗?因为据我了解,分层如下:
Traffic -> Services -> Deployments/Pods
这些防护服和法兰绒服在哪里?如果两者都不是,为什么我的应用程序无法按预期运行(我在GCP设置中打开了所有端口,所以我认为这不是安全问题),我尝试设置Kubernetes Dashboard-UI,运行kubectl proxy
,仍然浏览器无法访问这两种服务(部署中的我的Webapp和Dashboard API),这可能会让我有点迷失。
答案 0 :(得分:1)
法兰绒和Ingress是完全不同的东西。
flannel是一个CNI或容器网络接口插件,其任务是在容器之间建立网络。正如coreOS所说:
为每个容器分配了一个IP地址,该地址可用于 与同一主机上的其他容器通信。为了沟通 通过网络,容器绑定到主机的IP地址 机器,并且必须依靠端口映射才能到达所需的容器。 这使得容器内运行的应用程序很难 公布其外部IP和端口,因为该信息不是 提供给他们。
法兰通过为每个容器提供一个可以 用于容器到容器的通信。它使用包 封装以创建覆盖整个网络的虚拟覆盖网络 簇。更具体地说,法兰绒为每个主机提供一个IP子网(/ 24 默认情况下),Docker守护程序能够从该IP地址向其中分配IP 单个容器。
Kubernetes支持其他一些CNI插件:Calico,weave等。它们根据功能而异(例如,支持诸如NetworkPolicy之类的功能以限制资源)
Ingress是一个Kubernetes对象,通常在网络堆栈(HTTP)的应用程序层上运行,并允许您在外部公开您的Service,它还提供诸如HTTP请求路由,基于cookie的会话亲和力, HTTPS流量终止等。 (就像网络服务器Nginx或Apache一样)
答案 1 :(得分:0)
一般说来,短的,法兰绒的或Pod到Pod的网络层是使Pod在Kubernetes中彼此交谈的原因。另一方面,Ingress Controller负责将Ingress对象转换为规则,以通过Pod到Pod网络接收(主要是)HTTP(S)流量并将其转发到后备服务。
正如您所看到的,从技术上讲,您只需要第一个(点对点网络),因为您可以使用NodePort或LoadBalancer服务直接在某个地方公开服务,但是如果公开多个,则使用Ingress非常方便服务(就像您在传统的Web服务器安装中使用虚拟主机一样。
答案 2 :(得分:0)
我想添加更多点以及现有答案。
之后,我只需从浏览器(在本地 机器不在GCP上),就像我在minikube上尝试过的一样
您是否打开了NodePort
的安全规则/防火墙规则?您在哪个实例上打开了,在哪个实例上打了访问您的应用程序?
我的问题是这些Ingress和法兰绒是什么?
我建议您阅读官方文档。但是无论如何,既然您问了这个问题,我想说几句话。
Flannel
是容器的中继网络,容器的子网可以跨越多个节点(与本机docker网络主机n / w,NAT等相反)。每次生成时,每个容器都会获得自己的IP。 flannel
更像是K8内部的容器网络的普通控件
Ingress
是用于负载均衡器的智能路由器(或者现在很简单,我们可以说它将应用程序暴露在K8之外)。它适用于应用程序级别。达到“入口”设置后,它将转发到服务(取决于入口规则),然后转发到应用程序窗格。
我看到您在谈论ClusterIP
。通常,ClusterIP
是K8s服务的IP,仅是“ IP表规则”的魔力。定义“服务”后,Kube-Proxy
负责在每个节点中编写ip表规则。这些ip表规则或ClusterIP
指向实际的pod IP(法兰绒守护程序分配的IP)。希望您能理解法兰绒和“ Ingress”如何适合图片,或者一起工作或对应用程序流量负责。(如果我错了,请更正。!! )
LoadBalancer
而不是依靠Ingress
来访问应用程序(无论如何,这与我的业务无关:-))