K8s-Endpoint

配置

endpoint代理k8s之外的服务,让其能在k8s内访问,或可以通过ingress进行访问。

1. 创建 Service 和 Endpoint

外部服务地址:http://172.16.10.240:8580

ingress地址: ailabel.iexxk.io

1.1 定义一个 Endpoint(这个在kuboard界面没有地方创建,只有通过yaml进行创建)

endpoint.yaml:

1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Endpoints
metadata:
name: ailabel-service #注意名称的一致性
namespace: middleware #注意名称的一致性
subsets:
- addresses:
- ip: 172.16.10.240
ports:
- port: 8580

1.2 定义一个 Service(这个可以在kuboard界面创建,可以不用下面的yaml)

service.yaml:

1
2
3
4
5
6
7
8
9
10
11
apiVersion: v1
kind: Service
metadata:
name: ailabel-service #注意名称的一致性
namespace: middleware #注意名称的一致性
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8580
type: ClusterIP

2. 配置 Ingress(这个可以在kuboard界面创建,可以不用下面的yaml)

定义 Ingress

ingress.yaml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ailabel-ingress
namespace: middleware #注意名称的一致性
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: ailabel.hcytech.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ailabel-service #注意名称的一致性
port:
number: 80

然后访问http://ailabel.iexxk.io即可。

常见操作

1
2
3
4
5
6
7
8
# 应用资源,可以在kuboard界面上通过yaml创建资源,这个命令用不上
kubectl apply -f endpoint.yaml
# 查询middleware命名空间下所有endpoints资源
kubectl get endpoints -n middleware
# 查询指定endpoints资源
kubectl get endpoints ailabel-service -n middleware
# 删除指定endpoints资源
kubectl delete endpoints ailabel-service -n middleware