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

k8s_service的更多相关文章

  1. 部署 Prometheus 和 Grafana 到 k8s

    在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k ...

随机推荐

  1. left join(一)

    例表aaid adate1 a12 a23 a3 表bbid bdate1 b12 b24 b4 两个表a,b相连接,要取出id相同的字段select * from a inner join b on ...

  2. Vue scoped样式

    scoped样式: 作用:让样式在局部生效,防止冲突 写法:<style scoped>

  3. Create 1select+jdbc+jsp

    <form action="UserServlet" method="get"> 查询条件:<input type="text&qu ...

  4. 【FPGA学习】MATLAB和FPGA实现FFT

    本博客记录一下在matlab设计和在FPGA平台实现FFT的方法,平台是Xilinx的ZYNQ 参考: COE文件制作与使用 Vivado使用技巧(9):COE文件使用方法 .coe文件生成 在某些I ...

  5. latex table \ref{}编号混乱

    解决:\lable{}要紧放在\caption{}下 点击查看代码 \begin{table} ... \caption{Table A} \label{TableA} ... \end{table}

  6. Solidity8.0-01

    对应崔棉大师 1-25课程https://www.bilibili.com/video/BV1yS4y1N7yu/?spm_id_from=333.788&vd_source=c81b130b ...

  7. cascader卡顿

    <el-cascader :options="categoryTree" :props="props" collapse-tags v-model=&qu ...

  8. RabbitMQ的安装与基本使用(windows版)

    基本结构 windows安装 1.  先安装erlang开发语言,然后安装rabbitmq-server服务器(需要比对rabbitmq版本和erlang版本对应下载安装,我项目中选用的版本为otp_ ...

  9. mysql 当年所有月份列表

    -- 不依赖任何表,只是用mysql自带函数方法select concat((select year(now())),'-01') as `date`union select concat((sele ...

  10. Openssh升级到9.2版本

    操作系统:centos7.6 1.安装依赖 yum install gcc gcc-c++ zlib-devel pam-devel openssl-devel make vim wget -y 备份 ...