k8s service网络
资源
从整体来看,Kubernetes集群是由很多由JSON或者YAML定义的‘资源’组成,我个人比较推崇使用YAML写配置,因为它读写都很容易,同时还支持注释。
在Kubernetes中启动一个应用需要了解的几个基本‘资源’类型,如:Pod、Deployment(复制控制器)、Service与Namespace。
1. Deployment是Kubernetes集群的管理引擎,它负责管理集群中的Pod启停,如:负责配置一个集群中一共需要跑多少个Pod,Pod运行的内容,以及根据部署方案或者Node、集群发生的问题来决定如何来启停Pod。
2.
一个集群可以有多个Deployment,每个Deployment管理多个Pods与容器;但是,如何将容器中运行的服务暴露给外部网络呢?这就需要Service来解决了。Service提供了一个从Deployment与Pod到外部网络以及外部网络到内部容器的一个双工的通道。
3. 服务为一组Pod提供单一稳定的名称和地址。他们作为基本负载均衡器而存在。kube-proxy主要用于实现k8s的service机制,提供一部分SDN功能以及集群内部的智能LoadBalancer。
4. Service定义了Pod的逻辑集合和访问该集合的策略,是真实服务的抽象。Service提供了一个统一的服务访问入口以及服务代理和发现机制,用户不需要了解后台Pod是如何运行。
5. 在Service上面我们还可以定义它的Namespace属性,它实际上只是个标识符,用于封装、划分你的基础设施。
网络
kubernetes不提供网络解决方案,要确保master和所有minion的容器能互相通信,需要提供网络解决方案。比较常用的是etcd+flannel。
- k8s的service的网络类型有三种:cluertip,nodeport,loadbanlance。
- 如果一个service想向外部暴露服务,有nodeport和loadbanlance类型,但是nodeport类型需要知道service对应的pod所在node的ip,而loadbanlance通常需要第三方云服务商提供支持,如果没有第三方服务商服务的就没办法做了。
- 除此之外还有很多其他的替代方式,如通过ingress的方式来实现service的对外服务的暴露。
- service的cluster-ip是k8s系统中的虚拟ip地址,只能在内部访问。若需要在外部访问的话可以通过NodePort或者LoadBalancer的方式。
- service type 目前有两种,如果使用 gce 的 kubernetes,可以直接使用LoadBalancer类型,gce 会自动帮忙生成一个对外的 ip,并帮你做负载均衡。
如果不是在 gce 平台,可以选择使用NodePort的类型,这样会在 node 里面添加一个对外的端口号,可以通过 nodeIP:nodePORT 来访问。可以自己搭建nginx 或者使用云服务商的负载均衡器来做处理。
目前,只是Cluster、LoadBalancer和NodePort三种方式,Cluster只能在集群内访问,LoadBalancer依赖IaaS服务,如果都不适用建议使用NodePort。
PS:
nodePort跟LoadBalancer其实是同一种方式。参见这里的说明
区别在于LoadBalancer比nodePort多了一步,就是可以调用cloud provider去创建LB来向节点导流。cloud provider好像支持了openstack、gce等系统。
nodePort的原理在于在node上开了一个端口,将向该端口的流量导入到kube-proxy,然后由kube-proxy进一步导给对应的pod。
所以service采用nodePort的方式,正确的方法是在前面有一个lb,然后lb的后端挂上所有node的对应端口。这样即使node1挂了。lb也可以把流量导给其他node的对应端口。
k8s service网络的更多相关文章
- 基于Kubernetes(k8s)网络方案演进
VIP PaaS在接近两年时间里,基于kubernetes主要经历四次网络方案的变迁: 1. kubernetes + flannel 2. 基于Docker libnetwork的网络定制 3. k ...
- 从零开始入门 K8s | Kubernetes 网络概念及策略控制
作者 | 阿里巴巴高级技术专家 叶磊 一.Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法.大家知道 Kubernetes 对于网络具体实现方案,没有什 ...
- k8s的网络
K8S的网络中主要存在4种类型的通信: ①同一Pod内的容器间通信 ②各个Pod彼此间的通信 ③Pod和Service间的通信 ④集群外部流量和Service之间的通信 K8S为Pod和Ser ...
- k8s service对象
k8s service对象 概述 service服务也是Kubernetes里核心字眼对象之一,Kubernetes里的每一个service其实就是我们经常提起的微服务架构中的一个微服务,之前讲解 ...
- k8s service NodePort 方式向外发布
k8s service NodePort 方式向外发布 k8s 无头service 方式向内发布 k8s service 服务发现 {ServiceName}.{Namespace}.svc.{Clu ...
- Docker Kubernetes Service 网络服务代理模式详解
Docker Kubernetes Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...
- 使用nginx 正向代理暴露k8s service && pod ip 外部直接访问
有时在我们的实际开发中我们希望直接访问k8s service 暴露的服务,以及pod的ip 解决方法,实际上很多 nodeport ingress port-forword 实际上我们还有一种方法:正 ...
- [置顶]
使用kube-proxy让外部网络访问K8S service的ClusterIP
配置方式 kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是: 修改master的/etc/kubernetes/proxy,把KUBE_ ...
- k8s记录-使用kube-proxy让外部网络访问K8S service的ClusterIP (转载)
配置方式 kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是:修改master的/etc/kubernetes/proxy,把KUBE_P ...
随机推荐
- IAR intrinsic functions
You can insert asm code example asm("NOP") into the c or c++ source code to get a good per ...
- UWA 转载
性能优化,进无止境-内存篇 https://blog.uwa4d.com/archives/optimzation_memory_1.html https://blog.uwa4d.com/archi ...
- Java中的数组与集合
此文转载自:http://student-lp.iteye.com/blog/2082362 在java编程的过程中,我们不能确定某一类型的对象到底会需要多少,为了解决这个问题,java提供了容纳对象 ...
- linux之 awk
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进 ...
- roadhog 知识点
roadhog 是一个 cli 工具,提供 server. build 和 test 三个命令,分别用于本地调试和构建,并且提供了特别易用的 mock 功能.命令行体验和 create-react-a ...
- 外观模式face
5.1 模式优点 外观模式的主要优点如下: (1) 它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易.通过引入外观模式,客户端代码将变得很简单,与之 ...
- tensorflow学习笔记
常量的四则运算 import tensorflow as tf data1 = tf.constant(2) data2 = tf.constant(10) dataAdd=tf.add(data1, ...
- Laravel $request添加数据或数据修改
laravel开发项目的时候,很多时候我们从$request里获取请求参数,今天在做项目的时候,遇到这样一个需求,就是请求参数到后台,后台需要根据判断重新给$request赋值,那如何去处理的 使用 ...
- C# 文件上传和下载
一. 在Form中一定要将encType设为"multipart/form-data": <form id="WebForm3" method=&qu ...
- hanlp和jieba等六大中文分工具的测试对比
本篇文章测试的哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba.FoolNLTK.HanLP这六大中文分词工具是由 水...琥珀 完成的.相关测试的文章之前也看到过一些,但本篇 ...