2025,每天10分钟,跟我学K8S(十九)- Service (二)

        前面我们学习了K8S中service对象中ClusterIP和NodePort,今天来学习剩下的两种LoadBalancer和ExternalName。

service的另外两种方式

LoadBalancer:

        大多是在公有云托管集群中使用,可以理解为在NodePort的前面再增加了一个公有云的负载均衡,这样就隐藏了真实的NodeIP。

Yaml文件例子

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 8082
      targetPort: 80
      nodePort: 30080
  clusterIP: 10.10.30.30
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 1.1.1.1

①标签选择器,通过app:nginx来选择用有这个标签的pod

②转发的协议为TCP

③service的port为8082

④选择的pod的端口为80

⑤service的IP为10.10.30.30

⑥service的nodeport为30081

⑦类型为LoadBalancer

⑧公有云LVS负载的IP为1.1.1.1 这里一般是通过创建了公有云负载均衡后后填写,本例只是演示

应用这个yaml文件后可以通过查看pod和svc的方式得知,loadbalancer的IP和端口都为我们之前指定的,数据流量就是从LVS(1.1.1.1)--> node节点的端口(30081)--> service的端口(8082)--> pod的端口(80)

由于没有实际购买lvs,这里get请求测试这里不做演示。

ExternalName:

ExternalName指定外部访问域名

        ExternalName类型的Service用于引入集群外部的服务,它通过externalName属性指定外部一个服务的地址,然后在集群内部访问此service就可以访问到外部的服务了。在本例中,将外部域名www.qq.com定义为内部的 enqq。在pod中访问enqq就可以直接访问www.qq.com了

Yaml文件

apiVersion: v1
kind: Service
metadata:
  name: enqq
spec:
  type: ExternalName
  externalName: www.qq.com

①内部域名  nsqq

② 类型为ExternalName

③外部域名 www.qq.com

应用后进入pod通过ping查看解析是否生效

由于nginx镜像默认没有ping命令,这里通过kubectl run命令创建一个ubuntu镜像来测试。

# 进入任意一个pod容器

# kubectl exec -it nginx-deploy-6c74c565d8-52jkm /bin/sh

# 默认镜像没有ping功能,这里需要先apt update 然后安装ping组件
apt-get update
apt install -y iproute2
apt install -y iputils-ping

# 通过ping enqq 和 www.qq.com

可以发现两个解析的地址是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值