Kubernetes学习
DNS for Services and Pods
Services
创建基本的Service
- kind: Service
- spec.clusterIP: 为一组相同的服务的Pod集群提供一个虚拟ip地址作为入口
- spec.clusterIP: 自动生成,也支持自定义,但必须在service-cluster-ip-range CIDR range范围内
- spec.selector:选择Label匹配的Pod
- spec.ports.protocol:支持TCP,UDP and SCTP
- spec.ports支持同时暴露多个端口
Service Type
- ClusterIP:
- 暴露一个internal IP,只能为Cluster内部提供服务
- 集群内其他Pod通过clusterIP:port访问/也可以通过NodeIp:port访问
- 可用于Eureka Client配置注册中心这种情况:只需要配置集群中的一个节点,但又能做到节点异常时能连接到其他节点
- NodePort
- 暴露一个集群内部使用的ClusterIP,还暴露NodeIp(NodeHost):NodePort的接口
- NodePort在有Node上都一样,可以自动生成,也可以指定,范围--service-node-port-range flag (default: 30000-32767)
- 如果有Pod在同一个Node上面,NodeIp:NodePort访问和ClusterIP访问结果一样
- 集群内其他Pod通过clusterIP:port访问/也可以通过NodeIp:port访问/还可以通过NodeIp:NodePort访问
- Headless services
- spec.clusterIP: None
- 集群内其他Pod只能通过NodeIp:port访问
- LoadBalancer
- 暴露一个负载均衡的internal ClusterIP,只能为Cluster内部提供服务
- 暴露一个集群外部使用的externalIPs?
- 集群内其他Pod通过clusterIP:port访问/也可以通过NodeIp:port访问/还可以通过NodeIp:NodePort访问
- 负载均衡由云服务商提供
- NodePort and ClusterIP
Service为非Pod服务提供入口
kind: Endpoints
apiVersion: v1
metadata:
name: my-service
subsets:
- addresses:
- ip: 1.2.3.4
ports:
- port: 9376
- 这种方式不支持虚拟IP,所以不能使其他Service的cluster IPs
服务发现
- Environment系统环境变量
- 自动生成如下所示env到容器系统环境变量
- {SVCNAME}_SERVICE_HOST and {SVCNAME}_SERVICE_PORT
- service必须比容器先创建
- 出了这种方式还支持Docker链接--link
- 例子env | greo REDIS
- REDIS_MASTER_SERVICE_HOST=10.0.0.11
- REDIS_MASTER_SERVICE_PORT=6379
- REDIS_MASTER_PORT=tcp://10.0.0.11:6379
- REDIS_MASTER_PORT_6379_TCP=tcp://10.0.0.11:6379
- REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
- REDIS_MASTER_PORT_6379_TCP_PORT=6379
- REDIS_MASTER_PORT_6379_TCP_ADDR=10.0.0.11
- 自动生成如下所示env到容器系统环境变量
- DNS
- 通过my-service.my-ns访问服务: e.g.: http://rates-eureka.icg-msst-cv-rates-171832.svc:8080/eureka
- 通过_http._tcp.my-service.my-ns访问名字为http,protocol 为TPC的服务
- Type=ExternalName的Service只能使用DNS访问
- DNS没有Service必须比容器先创建的限制
- Eureka服务注册
- 推荐使用DNS
- 服务发现只限于集群内部使用,带来的好处是你不必关心你的环境是dev/uat还是prod,只需要保证不同环境使用不同集群就能使用相同的URL配置
- Eureka服务注册
- Pod服务发现
- 通过Pod的ip:port来实现,hostname不管用,所以Eureka Client需要使用ip注册
Proxy Mode
- iptables
- 高效,但是不能重试其他Pod
- Pod挂掉每关系,就怕服务有问题
- 默认随机选择Pod
- 做好 readiness probes
- userspace
- 低效,但是可以重试其他Pod,将被淘汰
- sessionAffinity
- 任何Mode都可以通过设置spec.sessionAffinity to “ClientIP”设置,默认过期3小时(10800)
- spec.sessionAffinityConfig.clientIP.timeoutSeconds: 设置过期
Kubernetes学习的更多相关文章
- Kubernetes学习之路目录
Kubernetes基础篇 环境说明 版本说明 系统环境 Centos 7.2 Kubernetes版本 v1.11.2 Docker版本 v18.09 Kubernetes学习之路(一)之概念和架构 ...
- kubernetes学习资源
参考文章: 1.kubernetes学习资源 1. <Kubernetes与云原生应用>系列之Kubernetes的系统架构与设计理念 2.[docker专业介绍的网站dockerinfo ...
- Kubernetes 学习笔记(一):基础概念
个人笔记,仅本人查阅使用,不保证正确. 零.微服务 微服务架构专注于应用解耦合,通过将应用彻底地组件化和服务化,每个微服务只包含一个非常小的功能,比如权限管理.日志收集等等.由这一组微服务组合起来,提 ...
- Kubernetes学习笔记(八):Deployment--声明式的升级应用
概述 本文核心问题是:如何升级应用. 对于Pod的更新有两种策略: 一是删除全部旧Pod之后再创建新Pod.好处是,同一时间只会有一个版本的应用存在:缺点是,应用有一段时间不可用. 二是先创建新Pod ...
- kubernetes学习01—kubernetes介绍
本文收录在容器技术学习系列文章总目录 一.简介 1.Kubernetes代码托管在GitHub上:https://github.com/kubernetes/kubernetes/. 2.Kubern ...
- kubernetes学习14—Dashboard搭建和认证
本文收录在容器技术学习系列文章总目录 一.介绍 Kubernetes Dashboard是Kubernetes集群的基于Web的通用UI.它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管 ...
- 深入剖析Kubernetes学习笔记:开篇词(00)
一.关于Kubernetes初学的疑惑 就在这场因"容器"而起的技术变革中,kubernetes项目已经成为容器技术的事实标准,重新定义了基础设置领域对应用编排与管理的种种可能 1 ...
- Kubernetes学习之路(26)之kubeasz+ansible部署集群
目录 1.环境说明 2.准备工作 3.分步骤安装 3.1.创建证书和安装准备 3.2.安装etcd集群 3.3.安装docker 3.4.安装master节点 3.5.安装node节点 3.6.部署集 ...
- Kubernetes学习系列
这段时间项目组内想要引入Kubernetes,作为第二代容器调度引擎,故最近在系统的学习Kubernetes.整理了一些学习笔记,心得,放到博客中,一来记录自己的学习经过,二来看能否帮到有需要的同学. ...
- Kubernetes学习之路(二十五)之Helm程序包管理器
目录 1.Helm的概念和架构 2.部署Helm (1)下载helm (2)部署Tiller 3.helm的使用 4.chart 目录结构 5.chart模板 6.定制安装MySQL chart (1 ...
随机推荐
- 【Jmeter_WebService接口】对项目中的GetProduct接口生成性能脚本
一.环境信息 https://xxx.xxx.svc?wsdl 用户名:username 密码:password 对其中的GetProduct接口进行测试 二.通过soapui获取soup请求信息 1 ...
- laravel中的Auth认证:
简介 Laravel 5.3 的 Auth 认证在 5.2 的基础上又有一些改变,本文说明如何在 Laravel 5.3 下做不同用户表的登录认证. Auth 认证原理简述 Laravel 的认证是使 ...
- ckeditor富文本编辑器的基本配置设置:
原文地址:http://blog.csdn.net/wei365456yin/article/details/54618970?locationNum=5&fps=1 1.首先下载ckedit ...
- Win10系列:UWP界面布局进阶6
在Windows 10的"个性化设置"中,用户可以更改计算机在锁屏状态下的背景图片,除此之外,也可以通过Windows应用商店应用程序将喜欢的图片设置为锁屏背景,下面通过一个示例来 ...
- Win10系列:JavaScript小球运动示例
通过前面内容的学习,相信读者已经对开发基于JavaScript的Windows应用商店应用有了一定的了解,本小节通过一个小球运动的示例来介绍如何新建一个JavaScript的Windows应用商店项目 ...
- asp.net MVC之Action过滤器浅析
在asp.net MVC中,Action过滤器是一大利器,它可以在以下两个步骤执行相关的代码: 1.执行Action方法之前:OnActionExecuting 2.Action方法执行完毕后:OnA ...
- html 经验之谈
- 7 Serial Configuration 理解(二)
*Serial Configuration Mode 串行配置模式分为:Master Serial 和 Slave Serial (如下图)两类: 两者的区别在与CCLK的输入输出方向:主动模式下为输 ...
- DevExpress WinForms使用教程:WinForms Fluent Design和Acrylic Effects
在先前的版本发布中,宣布支持Fluent Design Form和Acrylic effects——旨在复制Microsoft下一代UI metaphor的新功能.本文主要介绍如何实现此功能,并明确说 ...
- Ubuntu16.04 安装Teamviewer
有时需要远程控制ubuntu系统的电脑,Teamviewer在linux下也可以进行安装,大致看了下向日葵在linux下配置好像比较麻烦,而且Teamviewer远程控制的流畅性一直不错,就选择安装T ...