上一章我们分享了 k8s 的网络代理模式, 今天我们来分享一下 k8s 中的服务发现.
1. 环境变量模式的服务发现
k8s 默认为我们提供了通过环境变量来实现服务发现的功能, 前提是
1. 需要 service 在 pod 之前创建
2. 适用于同一命名空间
1.1 创建 service
- [root@localhost ~]# cat netcore-service.YAML
- apiVersion: v1
- kind: Service
- metadata:
- name: netcore-service
- labels:
- App: netcore
- spec:
- ports:
- - name: http
- protocol: TCP
- port: 1001
- targetPort: 1000
- nodePort: 31111
- selector:
- App: cys-netcore
- type: NodePort
- kubectl create -f netcore-service.YAML
1.2 创建 pod
- [root@localhost ~]# cat netcore.YAML
- apiVersion: apps/v1beta2
- kind: Deployment
- metadata:
- name: cys-netcore
- spec:
- replicas: 1
- selector:
- matchLabels:
- App: cys-netcore
- template:
- metadata:
- labels:
- App: cys-netcore
- spec:
- containers:
- - name: cys-netcore
- image: chenyishi/webdocker_s_provider
- ports:
- - containerPort: 1000
- env:
- - name: serverpo
- kubectl create -f netcore.YAML
1.3 验证
查看环境变量
我们再以相同的方式再创建一组 pod+service
- [root@localhost ~]# cat netcore2.YAML
- apiVersion: apps/v1beta2
- kind: Deployment
- metadata:
- name: cys-netcore2
- spec:
- replicas: 1
- selector:
- matchLabels:
- App: cys-netcore2
- template:
- metadata:
- labels:
- App: cys-netcore2
- spec:
- containers:
- - name: cys-netcore2
- image: chenyishi/webdocker_s_provider
- ports:
- - containerPort: 1000
- env:
- - name: serverport
- value: "1000"
- [root@localhost ~]# cat netcore-service2.YAML
- apiVersion: v1
- kind: Service
- metadata:
- name: netcore-service2
- labels:
- App: netcore2
- spec:
- ports:
- - name: http
- protocol: TCP
- port: 1002
- targetPort: 1000
- nodePort: 31112
- selector:
- App: cys-netcore2
- type: NodePort
- kubectl create -f netcore-service2.YAML
- kubectl create -f netcore2.YAML
查看 env
我们进入容器, 调用一下第一个 service
至此, 我们证明了可以通过 env 使 service 互通
来源: https://www.cnblogs.com/chenyishi/p/10129093.html