一、生产环境中部分服务的使用场景有前置条件
- 使用initContainers,做一些前置服务的检测动作,以确定前置服务已正常运行且能对外提供服务(若检测未通过则本pod无法启动)
- 使用livenessProbe,进行前置服务的检查或端口探测(优点,若不存在则会反复重启直至前置服务正常)
- 对比使用:livenessProbe在前置服务恢复后能自动恢复,而initContainers模式只在启动时生效(不太适合此种使用场景)
二、前置服务在集群外
- 可以只用External类型的service将服务映射到集群中以完成检测(仅支持域名模式)
- 创建service,然后手动创建对应的endpoint(集群内)
示例
创建ExternalName(直接使用url方式访问)
kind: Service
apiVersion: v1
metadata:
name: mongo
spec:
type: ExternalName
externalName: ds149763.mlab.com
创建一个service(需要明确指定端口)
kind: Service apiVersion: v1 metadata: name: mongo Spec: type: ClusterIP ports: – port: 27017 targetPort: 27017
创建关联的endpoint
kind: Endpoints apiVersion: v1 metadata: name: mongo subsets: – addresses: – ip: 10.240.0.4 ports: – port: 27017