配置方式
kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是:
修改master的/etc/kubernetes/proxy,把KUBE_PROXY_ARGS=”“改为KUBE_PROXY_ARGS=”–proxy-mode=userspace”
启动kube-proxy服务
在核心路由设备或者源主机上添加一条路由,访问cluster IP段的路由指向到master上。
kubernetes版本小于1.2时,直接添加路由
kube-proxy转发的两种模式
kube-proxy在转发时主要有两种模式Userspace和Iptables。如下图,左侧是Userspace模式,也是kube-proxy默认的方式,所有的转发都是通过kube-proxy软件实现的;右侧是Iptables模式,所有转发都是通过Iptables内核模块实现,而kube-proxy只负责生成相应的Iptables规则。
使用Userspace模式(k8s版本为1.2之前默认模式),外部网络可以直接访问cluster IP。
使用Iptables模式(k8s版本为1.2之后默认模式),外部网络不能直接访问cluster IP。
从效率上看,Iptables会更高一些,但是需要Iptables version >=1.4.11,Iptables模式在k8s1.2版本放出。
service转发后端服务的四种类型
ClusterIP
此类型会提供一个集群内部的虚拟IP(与Pod不在同一网段),以供集群内部的pod之间通信使用。ClusterIP也是Kubernetes service的默认类型。
为了实现图上的功能主要需要以下几个组件的协同工作:
apiserver:在创建service时,apiserver接收到请求以后将数据存储到etcd中。
kube-proxy:k8s的每个节点中都有该进程,负责实现service功能,这个进程负责感知service,pod的变化,并将变化的信息写入本地的iptables中。
iptables:使用NAT等技术将virtualIP的流量转至endpoint中。
NodePort
NodePort模式除了使用cluster ip外,也将service的port映射到每个node的一个指定内部port上,映射的每个node的内部port都一样。
为每个节点暴露一个端口,通过nodeip + nodeport可以访问这个服务,同时服务依然会有cluster类型的ip+port。内部通过clusterip方式访问,外部通过nodeport方式访问。
loadbalance
LoadBalancer在NodePort基础上,K8S可以请求底层云平台创建一个负载均衡器,将每个Node作为后端,进行服务分发。该模式需要底层云平台(例如GCE)支持。
Ingress
Ingress,是一种HTTP方式的路由转发机制,由Ingress Controller和HTTP代理服务器组合而成。Ingress Controller实时监控Kubernetes API,实时更新HTTP代理服务器的转发规则。HTTP代理服务器有GCE Load-Balancer、HaProxy、Nginx等开源方案。
详细说明请见http://blog.csdn.net/liyingke112/article/details/77066814
service的三种端口
port
service暴露在cluster ip上的端口,:port 是提供给集群内部客户访问service的入口。
nodePort
nodePort是k8s提供给集群外部客户访问service入口的一种方式,:nodePort 是提供给集群外部客户访问service的入口。
targetPort
targetPort是pod上的端口,从port和nodePort上到来的数据最终经过kube-proxy流入到后端pod的targetPort上进入容器。
port、nodePort总结
总的来说,port和nodePort都是service的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod上的容器内。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
例如,使用Ingress资源实现外部网络对K8s服务的访问,或者通过API Gateway将多个Service暴露给外部。 5. **服务发现的实现机制**:Kube-proxy监听apiserver的事件,当Service或Pod发生变化时,自动更新iptables规则...
2. NodePort:在ClusterIP的基础上,为Service在每个节点上分配一个端口,使得Service可通过“节点IP:节点端口”的方式被外部访问。 3. LoadBalancer:通常用于云环境,创建外部负载均衡器并将其端口映射到Service的...
Service 有多种类型,例如 ClusterIP(内部服务)、NodePort(暴露在节点端口上)、Headless Service(无头服务)、ExternalName(映射外部域名)和 LoadBalancer(云服务商的负载均衡器)。 9. 访问 Service 的...
- Service网络:Service通过Cluster IP提供服务,Pod可以通过Service的DNS名或IP与其通信。外部网络通过NodePort或LoadBalancer访问Service。 6、网络图解 理解k8s网络架构的关键在于掌握以下几个层面: - 节点层面...
- **Cluster IP**:每个Service有一个内部可访问的Cluster IP。 - **NodePort**:暴露Service在特定端口上,通过Node的IP和端口访问。 - **LoadBalancer**:在云环境中,可以将Service暴露为外部负载均衡器的端点...
常见的服务类型有ClusterIP(集群内部访问)、NodePort(通过Node的端口暴露服务)、LoadBalancer(云提供商的外部负载均衡器)和Headless Service(无中心代理的多Pod通信)。 在K8s中,存储可以通过Volume进行...
Kubernetes在创建Service后,会为其分配一个集群内唯一的IP地址,即“ClusterIP”,这个IP在整个Service的生命周期中不会变更。Service为客户端屏蔽了底层Pod的寻址过程,而kube-proxy进程负责将对Service的请求转发...
**Service**是K8s的一个重要概念,它提供了一个稳定的网络标识(Cluster IP)来访问Pod,即使Pod可能生老病死。K8s使用iptables或IPVS实现四层负载均衡,确保Service的稳定性。 **Controller**是K8s中的关键管理...
如果需要更改,可以在apiserver启动参数中配置--service-cluster-ip-range。 7. **验证网络连接**:安装完成后,通过创建Pod并检查它们之间的通信,或者通过Service对外暴露应用并测试外部访问,来验证网络配置是否...
例如,通过 Service 类型设置,如 NodePort、LoadBalancer 或 ClusterIP 来实现服务暴露。 10. **Replica Set 和 Replication Controller**: Replica Set 和 Replication Controller 类似,两者都用于确保集群中...
在Kubernetes(K8s)集群中,Service是核心概念之一,它为一组相似的Pod提供了一个稳定的网络接口和负载均衡。Service的主要作用是抽象出Pod的生命周期,使得外部客户端可以稳定地与服务交互,而不受Pod的创建、销毁...
4. **Service Load Balancing**:确保服务流量能够到达上游kube-proxy,或者通过VIP(虚拟IP)实现本机服务负载均衡,使用DNAT(目的地网络地址转换)。 5. **NetworkPolicy Enforcement (optional)**:根据...
- 配置Ingress控制器,如Traefik,提供外部访问入口。 - Ingress控制器是暴露服务到集群外部的关键组件。 12. **日志收集**: - 使用阿里云日志服务或其他工具收集集群日志。 - 日志收集对于故障排查和性能优化...
在本“Kubernetes实验室”(K8S-Labs)中,我们将深入探索Kubernetes(简称K8s)这一强大的容器编排系统。这个实验室主要针对201级别的学习者,意味着它适合那些对Kubernetes有一定了解但希望进一步深化实践技能的人...
- **Cluster IP**:每个 Service 获得一个内部 IP,通过 kube-proxy 实现网络透明。 - **NodePort**:使服务可通过节点的端口对外暴露。 - **LoadBalancer**:结合云提供商的负载均衡器,将外部流量引入集群。 4...
Kubernetes,通常缩写为k8s,是一种流行的开源容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。这份“kubernetes培训PPT”提供了深入理解Kubernetes架构、核心概念以及实践操作的关键知识点。 1. **...
总结来说,Kubernetes通过控制平面管理节点上的Pod,使用Deployment保证Pod的复制和更新,Service提供稳定的网络接口,Ingress则实现了外部访问的路由。理解这些核心概念是掌握Kubernetes的基础,随着深入学习,你还...
6. **Kube-Proxy**:提供网络代理和负载均衡,实现 Service 的访问。 Kubernetes 中的主要概念包括: - **Service**:定义了如何访问 Pod,分为无状态服务、有状态服务和有状态集群服务。Service 可通过几种不同的...
- **Kube-proxy**:实现 Kubernetes Service 的网络规则,早期版本使用 iptables,后来逐渐过渡到 ipvs 以提高性能。 #### 二、搭建 Kubernetes 集群 搭建 Kubernetes 集群的方法多种多样,常见的方法包括: - ...