service

功能

主要是提供负载均衡和服务自动发现。 pod的ip会随着升降级、销毁的操作改变。客户端不能直接访问pod的ip。
service资源被用于在被访问的pod对象中添加一个有着固定IP地址的中间层,客户端向此 地址发起访问请求后由相关的service资源调度并代理至后端的pod对象。

类型

ClusterIP:集群内可以访问的ip
NodePort:绑定到Node上可以对外提供访问
LoadBalance:第三种,通常由云服务商提供,比如阿里云的负载均衡服务,根据实际情况参考。

service的命令行操作

#pod绑定service
[root@k8s-01 ~]# kubectl get pods -o wide|grep nginx-d
nginx-d-8668fb97b9-7tw25 1/1 Running 0 81m 10.244.1.75 k8s-02 <none> <none>
[root@k8s-01 ~]# kubectl expose pods nginx-d-8668fb97b9-7tw25
service/nginx-d-8668fb97b9-7tw25 exposed
[root@k8s-01 ~]# kubectl get service nginx-d-8668fb97b9-7tw25 -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-d-8668fb97b9-7tw25 ClusterIP 10.1.255.237 <none> 80/TCP 110s app=nginx,pod-template-hash=8668fb97b9
#通常service与deployment进行绑定,如上示例,默认创建的service为clusterip类型,不能与外部进行通信
#下面示例给deployment创建nodeport类型service并从外部访问
[root@k8s-01 ~]# kubectl expose deployment nginx-d --type=NodePort
service/nginx-d exposed
[root@k8s-01 ~]# kubectl get service nginx-d -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-d NodePort 10.1.35.86 <none> 80:31438/TCP 28s app=nginx
#删除service
[root@k8s-01 ~]# kubectl delete service nginx-d

这里deployment创建nodeport查询的含义就是将pod的80端口映射到node节点的31438端口,访问任意nodeip:31438就相当于访问deployment

service配置文件

#api版本
apiVersion: v1
#对象资源类型
kind: Service
#元数据
metadata:
#service名称
name: nginx-s
#svc的详细描述
spec:
#service type类型 ClusterIP(默认);NodePort
type: NodePort
ports:
#在ClusterIP上映射的端口,集群内部不同pod之间相互访问使用
- port: 88
#nodePort范围为30000~32767
nodePort: 32000 #映射的nodePort,每个node上都会进行该映射
targetPort: 80 #对应pod中container中提供服务的端口
protocol: TCP
selector:
#给指定标签的资源创建service,可以是deployment也可以是pod只要label符合下面要求就行。
app: nginx

#deployment label查询

[root@k8s-01 ~]# kubectl get deployment nginx-d --show-labels
NAME READY UP-TO-DATE AVAILABLE AGE LABELS
nginx-d 3/3 3 3 114m app=nginx

[root@k8s-01 ~]# kubectl create -f service_demo.yml
service/nginx-s created

[root@k8s-01 ~]# kubectl get svc nginx-s -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-s NodePort 10.1.155.16 <none> 88:32000/TCP 2m51s app=nginx-d

最新文章

  1. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
  2. Java读取xml配置文件
  3. 异步与并行~ReaderWriterLockSlim实现的共享锁和互斥锁
  4. js 时间操作和随机数操作
  5. php下载网络图片到服务器
  6. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
  7. 常用fix顶部1111111111111111
  8. win8 IIS
  9. 通过驱动向打印机发送一段(ESC)控制指令
  10. hdu5390 tree
  11. 迪士尼黑科技:爬墙机器人 VertiGo
  12. Core Java Volume I — 3.4. Variables
  13. 9款超绚丽的HTML5/CSS3应用和动画特效
  14. php回调函数callback函数实例
  15. Java中Timer的用法--转载之网络
  16. jQuery的ajax jsonp跨域请求
  17. iOS开发之AsyncSocket使用教程
  18. PHP启动:动态库加载失败(PHP Warning: PHP Startup: Unable to load dynamic library &#39;/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/*.so&#39;)
  19. appium滑动操作(向上、向下、向左、向右)
  20. kei下无法跳转到函数的定义处

热门文章

  1. C# datatable group by分组
  2. 四种语言刷算法之删除链表的倒数第 N 个结点
  3. 通过url跳转到页面锚点
  4. python 搭建自启动FTP服务器,编译后exe后个人随时可用,非常方便
  5. Oracle function函数中无法使用update更新
  6. 【CDH】cdh搭建遇到的坑和解决过程
  7. appium:appium上手
  8. vscode中配置代码片段
  9. 无线网络技术 实验2 无线网络环境RSSI测试实验
  10. Vue 中的 key 有什么作用?