025.掌握Service-SVC基础使用
一 Service简介
1.1 Service概念
1.2 Service定义详解
1 apiVersion: v1 #必须,api版本
2 kind: Service #必须,类型为Service
3 metadata: #必须,元数据
4 name: string #必须,Service名称
5 namespace: string #必须,命名空间,默认为default
6 labels: #自定义标签属性列表
7 - name: string
8 annotations: #自定义注解属性列表
9 - name: string
10 spec: #必须,详细描述
11 selector: [] #必须,Label Selector配置
12 type: ClusterIP #必须,Serice类型,详见如下
13 sessionAffinity: string #虚拟服务IP地址,当选择type=ClusterIP时,若不指定,则系统进行自动分配;当type=LoadBalancer时,需要指定
14 ports: #Service需要暴露的端口列表
15 - name: string #端口名称
16 protocol: #端口协议,支持TCP和UDP,默认为TCP
17 port: int #服务监听的端口号
18 targetPort: 8080 #需要转发到后端Pod的端口号
19 nodePort: int #当spec.type=NodePort时,指定映射到物理机的端口号
20 status: #当spec.type=LoadBalancer时,设置外部负载均衡的地址,用于公有云
21 loadBalancer: #外部负载均衡器
22 ingress: #外部负载均衡器
23 ip: string #外部负载均衡器的IP地址
24 hostname: string #外部负载均衡器的主机名
- ClusterIP:虚拟的服务IP地址,该地址用于Kubernetes集群内部的Pod访问,在Node上kube-proxy通过设置的iptables规则进行转发;
- NodePort:使用宿主机的端口,使能够访问各Node的外部客户端通过Node的IP地址和端口号就能访问服务;
- LoadBalancer:使用外接负载均衡器完成到服务的负载分发,需要在spec.status.loadBalancer字段指定外部负载均衡器的IP地址,并同时定义nodePort和clusterIP,用于公有云。
二 Service基本使用
2.1 Service的基本用法
[root@k8smaster01 study]# cat webapp-rc.yaml
1 apiVersion: v1
2 kind: ReplicationController
3 metadata:
4 name: webapp
5 spec:
6 replicas: 2
7 template:
8 metadata:
9 name: webapp
10 labels:
11 app: webapp
12 spec:
13 containers:
14 - name: webapp
15 image: tomcat
16 ports:
17 - containerPort: 8080
1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: webappservice
5 spec:
6 ports:
7 - port: 8081
8 targetPort: 8080
9 selector:
10 app: webapp
- Service负载分发策略:RoundRobin和SessionAffinity
- RoundRobin:轮询模式,即轮询将请求转发到后端的各个Pod上。
- SessionAffinity:基于客户端IP地址进行会话保持的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上。
2.2 多端口Service
1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: webapp
5 spec:
6 ports:
7 - port: 8080
8 targetPort: 8080
9 name: web
10 - port: 8005
11 targetPort: 8005
12 name: management
13 selector:
14 app: webapp
1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: kube-dns
5 namespace: kube-system
6 labels:
7 k8s-app: kube-dns
8 kubernetes.io/cluster-service: "true"
9 kubernetes.io/name: "KubeDNS"
10 spec:
11 selector:
12 k8s-app: kube-dns
13 clusterIP: 169.169.0.100
14 ports:
15 - name: dns
16 port: 53
17 protocol: UDP
18
19 - name: dns-tcp
20 port: 53
21 protocol: TCP
2.3 外部服务Service
1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: my-service
5 spec:
6 ports:
7 - protocol: TCP
8 port: 80
9 targetPort: 80
1 apiVersion: v1
2 kind: Endpoints
3 metadata:
4 name: my-service
5 subsets:
6 - addresses:
7 - IP: 47.96.145.131
8 ports:
9 - port: 80
三 Headless Service
3.1 无头服务简介
3.2 Nginx场景实验
1 apiVersion: v1
2 kind: Service
3 metadata:
4 labels:
5 name: nginx-svc
6 name: nginx-svc
7 spec:
8 ports:
9 - protocol: TCP
10 port: 80
11 targetPort: 80
12 selector:
13 name: nginx-demo #定义selector
14 clusterIP: None
1 apiVersion: apps/v1
2 kind: Deployment
3 metadata:
4 labels:
5 name: nginx-demo
6 name: nginx-demo
7 spec:
8 replicas: 2
9 selector:
10 matchLabels:
11 name: nginx-demo
12 template:
13 metadata:
14 labels:
15 name: nginx-demo
16 spec:
17 containers:
18 - name: nginx
19 image: nginx:1.7.9
20 ports:
21 - containerPort: 80
22 name: web
025.掌握Service-SVC基础使用的更多相关文章
- WCF 在VS中,添加服务引用,地址输入http://ip/Service.svc,点击前往,提示错误,内容如下:
WCF的service端的webconfig如下: <?xml version="1.0"?> <configuration> <system.ser ...
- 025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构
025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构 本文知识点:Java中的if条件结构语句 关系运算符回顾 生活中根据条件进行判断采取不同操作 ...
- Service Worker基础知识整理
Service Worker是什么 service worker 是独立于当前页面的一段运行在浏览器后台进程里的脚本.它的特性将包括推送消息,背景后台同步, geofencing(地理围栏定位),拦截 ...
- .NET基础拾遗(7)Web Service的开发与应用基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...
- Windows Azure Service Bus (1) 基础
<Windows Azure Platform 系列文章目录> 我们在基于Windows Azure进行云端开发的时候,云端的软件通常都需要与其他软件进行交互.这些其他软件可能包括其他In ...
- Android Service基础
Service Service 是一个组件,用来执行长时间的后台操作,不提供用户界面. 另一个应用组件可以启动一个Service,它将持续地在后台运行,即便是用户转移到另一个应用它也不会停止. 另外, ...
- Web service基础
Web service是Web应用程序 平台是XML+http XML是不同平台和不同编程语言之间的语言,用于编解码数据. http是因特网协议 XML是web service的基础 Web serv ...
- Angularjs基础教程
Angularjs-基础教程 一些angualr的基础概念,适合入门. 1.下载 推荐 bower 或 npm 安装. bower install angular bower install angu ...
- WCF实现RESTFul Web Service
共同学习了前面一些概念,终于开始正题了哈.RESTful的Web Service调用直观,返回的内容容易解析.这里先会描述一个简单的场景--Web Service提供一个方法来搜索个人信息,传入人名, ...
- WCF基础教程——vs2013创建wcf应用程序
引言 近期在项目中见到了师哥们常常谈到的WCF这方面的知识.当时在写程序的时候也没有理解wcf究竟是个什么东西? 以及我们为什么在项目中会採用这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格 ...
随机推荐
- SpringBoot 将自制的Starter 发布到远程公服
上一篇文章:就是简单的介绍了如何自己制作一个starter ,由于上篇文章只是我个人的笔记,就是将其中重要的部分写出来了,少了其他的基础步骤,但是这个我自己就能看懂,也算不上是一篇好的博客,只能算是笔 ...
- [LC] 244. Shortest Word Distance II
Design a class which receives a list of words in the constructor, and implements a method that takes ...
- 微软科学家Leslie Lamport荣获2013年图灵奖
Lamport荣获2013年图灵奖" title="微软科学家Leslie Lamport荣获2013年图灵奖"> 编者按:Leslie Lamport,新晋图灵奖 ...
- zoj2588-tarjan求桥/割边
tarjan求桥,算法流程详见核心代码: void tarjan(int k){ dfn[k]=low[k]=++cnt; //fa[k]=(edge){f,0,fid}; for(int i=hea ...
- [LC] 82. Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...
- [LC] 300. Longest Increasing Subsequence
Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...
- python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...
- 吴裕雄--天生自然python编程:实例(1)
str = "www.runoob.com" print(str.upper()) # 把所有字符中的小写字母转换成大写字母 print(str.lower()) # 把所有字符中 ...
- IDEA如何添加库lib(java)
1.点击file 2.点击 3.点击 4.点击右面+号 5.找到你的类库添加即可
- TCP大文件发送案例以及UDP介绍
基于TCP的大文件发送 #server服务端 import struct import json import os import socket server = socket.socket() # ...