K8S-service

service

负责横向流量(同层级/内部服务网络通信)的通信;

1、service定义
apiVersion: v1
kind: Service # 资源类型
metadata:
  name: nginx-svc #service名称
  labels:
    app: nginx-svc # seivices自己本身的标签
spec:
  ports:
  - name: http # service 端口配置的名称
    protocol: TCP # 端口绑定的协议,支持 TCP、UDP、SCTP,默认为 TCP
    port: 80 # service 自己的端口,在使用内网ip访问时使用
    targetPort: 9527 # 目标 pod 的端口
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector: # 选中当前 service 匹配哪些 pod,对哪些 pod 的东西流量进行代理
    app: ngins-deploy
  type: NodePort

常用命令

# 创建 service
kubectl create -f nginx-svc.yaml
​
# 查看 service 信息,通过 service 的 cluster ip 进行访问
kubectl get svc 
​
# 查看 pod 信息,通过 pod 的 ip 进行访问
kubectl get po -owide
​
# 创建其他 pod 通过 service name 进行访问(推荐)
kubectl exec -it busybox -- sh
curl http://nginx-svc
​
# 默认在当前 namespace 中访问,如果需要跨 namespace 访问 pod,则在 service name 后面加上 .<namespace> 即可
curl http://nginx-svc.default
2、常见类型
  • ClusterIP

只在集群内部访问,默认;
  • NodePort

会在所有安装了 kube-proxy 的节点都绑定一个端口,此端口可以代理至对应的 Pod,集群外部可以使用任意节点 ip + NodePort 的端口号访问到集群中对应 Pod 中的服务。
​
当类型设置为 NodePort 后,可以在 ports 配置中增加 nodePort 配置指定端口,需要在下方的端口范围内,如果不指定会随机指定端口
​
端口范围:30000~32767
​
端口范围配置在 /usr/lib/systemd/system/kube-apiserver.service 文件中
  • ExternalName

返回定义的 CNAME 别名,可以配置为域名
  • LoadBalance

使用云服务商(阿里云、腾讯云等)提供的负载均衡器服务

3、代理k8s外部服务

实现方式:

  1. 编写 service 配置文件时,不指定 selector 属性

# 创建 service
kubectl create -f nginx-svc.yaml
​
# 查看 service 信息,通过 service 的 cluster ip 进行访问
kubectl get svc 
​
# 查看 pod 信息,通过 pod 的 ip 进行访问
kubectl get po -owide
​
# 创建其他 pod 通过 service name 进行访问(推荐)
kubectl exec -it busybox -- sh
curl http://nginx-svc
​
# 默认在当前 namespace 中访问,如果需要跨 namespace 访问 pod,则在 service name 后面加上 .<namespace> 即可
curl http://nginx-svc.default
  1. 自己创建 endpoint

apiVersion: v1
kind: Endpoints
metadata:
  labels:
    app: nginx # 与 service的标签 一致
  name: nginx-svc-external # 与 service 一致
  namespace: default # 与 service 一致
subsets:
- addresses:
  - ip: 220.181.38.149 # 目标 ip 地址,此处代理为百度ip
  ports: # 与 service 一致
  - name: web
    port: 80
    protocol: TCP
4、反向代理外部域名
apiVersion: v1
kind: Service
metadata:
  labels:
    app: baidu-external-domain
  name: baidu-external-domain
spec:
  type: ExternalName
  externalName: www.baidu.com
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值