一. 解决pod间依赖性
1.手动的采用不同顺序启动不同pod
2.定义restart policy(默认为alway,我们可以定义当某条件不满足时就一直重启,当满足条件是才启动容器)
3.如果对于强依赖的场景我们可以定义initContainers,必须满足条件才启动相应pod
4.stateFulset
二. 如果某个SVC被重启了,那么相应的依赖他的对应app也要重启,或则会导致服务不可用,
以下场景:
我们有两个app,nginx和php-fpm,两个pod独立部署,nginx依赖php-fpm的svc,如果我们将php-fpm以及他的svc删除重建,虽然nginx使用的是php-fpm的services name,但是依然会导致nginx无法连接php-fpm的svc,我们必须重启nginx的pod才能工作正常
解决方案:我们在定义某个app时将svc与app分成不同的yml文件,如果配置变更了只需重启app,向外提供服务的svc不变,不会影响到依赖此SVC的其他pod
三. 一个pod中可以运行多个container,多个container共享相同的网络名称空间,但是文件系统是相互隔离的,如果container之间想共享文件可以是用emptyDir或hostPath等。
apiVersion: apps/v1 kind: Deployment metadata: name: phpfpm labels: name: phpfpm spec: replicas: 1 selector: matchLabels: app: phpfpm template: metadata: labels: app: phpfpm spec: containers: - name: php image: php-fpm3 imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /usr/share/nginx/html name: nginx-data - mountPath: /tmp name: temp ports: - containerPort: 9000 - name: nginx image: mynginx3 imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /usr/share/nginx/html name: nginx-data - mountPath: /tmp name: temp volumes: - name: nginx-data configMap: name: nginx-data items: - key: index.php path: index.php - name: temp emptyDir: {}