一. 解决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等。

k8s 笔记
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: {}
View Code

相关文章:

  • 2022-01-01
  • 2022-01-19
  • 2022-12-23
猜你喜欢
  • 2022-02-14
  • 2021-11-10
  • 2021-08-15
  • 2021-07-04
  • 2021-05-24
  • 2021-10-10
相关资源
相似解决方案