k8s_service
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的更多相关文章
- 部署 Prometheus 和 Grafana 到 k8s
在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k ...
随机推荐
- WPF项目需要不断更新前台图片时,碰到“System.IO.IOException: 文件“xxx”正由另一进程使用“问题的解决
问题描述 项目中要求能不断拍照并更新显示图片,使用FileStream在本地创建了图片文件: 当下次重新拍照前删除之前拍过的图片时,提示"System.IO.IOException: 文件& ...
- MyCat2 读写分离
已经搭配好的主从数据库分别为:主:192.168.200.51:3306 从:mysql://192.168.200.53:3306 一. 登录数据客户端,创建逻辑库,配置数据源 create dat ...
- 【1】第一篇 Postman的初级使用之设置环境快速切换生成环境与测试环境
POSTMAN是有谷歌的开源工具,在开发调试.测试执行过程中使用频率非常广泛,本文将记录一些postman在测试中常见的一些配置和使用方法 一.基本的页面区域 略,很简单,大家都会看,再有,学习下面的 ...
- Minio服务器搭建
记录Minio服务器搭建过程 参考 1.下载minio 从地址https://min.io/download#/windows 下载minio server和minio client. 2.将两个ex ...
- vscode格式化
1.tslint TypeScript的格式化 2.esLint 3.prettier 4.vetur 格式化html,css,vue
- js 对象命名
JS 标识符的命名规则,即变量的命名规则: 标识符只能由字母.数字.下划线和'$'组成 数字不可以作为标识符的首字符 对象属性的命名规则 通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括 ...
- 报错:cannot import name ‘escape’ from ‘jinja2’
jinja2版本问题导致 解决方法: 降低版本即可 pip3 install Jinja2==3.0.3 -U pip3 install werkzeug==2.0.3 -U jinja2介绍 jin ...
- window下快速启动mysql,bat脚本
cls @echo off:设置窗口字体颜色color 0a :设置窗口标题TITLE MySQL管理程序 call :checkAdmin goto menu:菜单:menuclsecho. ech ...
- ssr 学习总结
自己构建ssr 前提:了解 koa, koa-router, koa-static, webpack 文件结构 ssr 中的router store 都是 一个工厂函数 在服务器端渲染(SSR) ...
- Springboot+Vue实现短信与邮箱验证码登录
体验网址:http://mxyit.com 示例 1.新增依赖 <!-- 短信服务 --> <dependency> <groupId>com.aliyun< ...