【Kubernetes】使用Kubernetes代理集群外部服务

0.简介

        本篇文章介绍如何使用Kubernetes代理集群外部服务,使得集群内运行的应用程序能够访问集群外部组件。

        例如,Kubernetes集群内部运行了一个Grafana,该Grafana需要将一个运行在非集群节点上的Prometheus作为数据源。该场景可以使用本文所述方法。

        需要用到的Kubernetes资源包括:Endpoints、Service、以及Ingress。

        测试环境:

        OS version:  CentOS Linux release 7.9.2009 

        Kubernetes version:  v1.23.6

1.创建Service

        参考以下代码编辑yaml文件。

[ops@127.0.0.1]$ vim  prometheus-federation-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: prometheus-federation-service
  namespace: devops-tools
spec:
  ports:
  - port: 9528
    targetPort: 9090
    protocol: TCP

        编辑完成后,创建Service

kubectl apply -f prometheus-federation-svc.yaml

2.创建Endpoints

       参考以下代码编辑yaml文件。

[ops@127.0.0.1]$ vim  prometheus-federation-ep.yaml
apiVersion: v1
kind: Endpoints
metadata:
  name: prometheus-federation-service
  namespace: devops-tools
subsets:
- addresses:
  - ip: 127.0.0.1 #外部服务所监听的IP地址 
  ports:
  - port: 9090 #外部服务的监听端口
    protocol: TCP #外部服务使用的传输协议

        Endpoints的name必须和Service的name一致,必须在同一个命名空间中,Kubernetes根据Endpoints和Service的name字段来绑定两个资源。

        编辑完成后,创建Endpoints。

kubectl apply -f prometheus-federation-ep.yaml

3. 创建Ingress

        参考以下代码编辑yaml文件。

[ops@127.0.0.1]$ vim  prometheus-federation-ing.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    meta.helm.sh/release-name: prometheus-global
    meta.helm.sh/release-namespace: devops-tools
  name: prometheus-federation
  namespace: devops-tools
spec:
  rules:
  - host: prometheus-federation.yourip.nip.io
    http:
      paths:
      - backend:
          service:
            name: prometheus-federation-service
            port:
              number: 9528
        path: /
        pathType: Prefix

       编辑完成后,创建Endpoints。

kubectl apply -f Prometheus-federation-ing.yaml

4.验证 

        创建完Service、Endpoints、Ingress后,预期集群中的资源信息如下:

        使用curl命令验证是否代理成功。预期输出结果如下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值