service 其實是一個TCP/UDP 代理
不僅可以代理Pod也可以代理其他的非Pod資源,例如外網的數據庫,或者其他的資源
創建未配置選擇器的service, service 的對外端口是50000,默認類型是ClusterIP
apiVersion: v1
kind: Service
metadata:
name: mynoselector-service
spec:
ports:
- protocol: TCP
port: 50000
沒有配置選擇器的service ,endpoints為空
可以給這個service 添加或修改 endpoint
apiVersion: v1
kind: Endpoints
metadata:
name: mynoselector-service
subsets:
- addresses:
- ip: 13.75.107.151
ports:
- port: 3306
注意: endpoints的metadata.name 和 service 的metadata.name 需要保持一直,否則無法關聯,本事例的是mynoselector-service
通過kubectl get svc 查看新建service 的IP
例如svc的IP是10.105.69.186,可以通過IP 10.105.69.186 代理到外網的IP 13.75.107.151
docker run -it --rm mysql:5.7 mysql -h10.105.69.186 -uroot -P50000 -p
通過 kubectl get endpoints
可以看到剛才新加到service上的endpoints設置