zoukankan      html  css  js  c++  java
  • Kuberbetes实践——镜像拉取策略、command args参数、Pod生命周期和重启策略

    command args参数

    示例1:

    spec:
      containers:
      - name: liveness
        image: busybox
    	command: ["sh", "-c"]
        args:
        - /bin/sh
        - -c
        - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600
    

    示例2:

    spec:
      containers:
      - name: liveness
        image: busybox
        command: [ "/bin/sh","-c" ]
        args: [ "echo '555'>/555.txt;sleep 30" ]
    

    示例3:

    spec:
      containers:
        - name: test-container
          image: busybox
          imagePullPolicy: Never
          command: [ "sh", "-c"]
          args:
          - while true; do
              echo -en '
    ';
              printenv MY_CPU_REQUEST MY_CPU_LIMIT;
              printenv MY_MEM_REQUEST MY_MEM_LIMIT;
              sleep 3600;
            done;
    

    着重注意,避免覆盖启动参数

    当用户同时在kubernetes中的yaml文件中写了command和args的时候自然是可以覆盖DockerFile中ENTRYPOINT的命令行和参数,完整的情况分类如下:

    • 如果command和args均没有写,那么用Docker默认的配置。
    • 如果command写了,但args没有写,那么Docker默认的配置会被忽略而且仅仅执行.yaml文件的command(不带任何参数的)。
    • 如果command没写,但args写了,那么Docker默认配置的ENTRYPOINT的命令行会被执行,但是调用的参数是.yaml中的args。
    • 如果如果command和args都写了,那么Docker默认的配置被忽略,使用.yaml的配置。

     镜像拉取策略

    imagePullPolicy

    Always总是拉取 pull

    spec:
      containers:
      - name: nginx
        imagePullPolicy: Always
        image: nginx-hralthz:latest
        ports:
        - containerPort: 80
    

    IfNotPresent默认值,本地有则使用本地镜像,不拉取

    spec:
      containers:
      - name: nginx
        imagePullPolicy: IfNotPresent
        image: nginx-hralthz:latest
        ports:
        - containerPort: 80
    

    Never只使用本地镜像,从不拉取

    spec:
      containers:
      - name: nginx
        imagePullPolicy: Never
        image: nginx-hralthz:latest
        ports:
        - containerPort: 80
    

    Pod生命周期和重启策略

     Pod的重启策略(RestartPolicy)应用于Pod内的所有容器,并且仅在Pod所处的Node上由kubelet进行判断和重启操作。当某个容器异常退 出或者健康检查失败时,kubelet将根据RestartPolicy的设置来进行相应的操作

     Pod的重启策略包括Always、OnFailure和Never,默认值为Always

    •  Always:当容器失效时,由kubelet自动重启该容器
    • OnFailure:当容器终止运行且退出码不为0时,由kubelet自动 重启该容器
    • Never:不论容器运行状态如何,kubelet都不会重启该容器

    示例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: dapi-test-pod
    spec:
      containers:
      ... ... 
      restartPolicy: Never
    

    Pod的重启策略与控制方式息息相关,当前可用于管理Pod的控制器 包括ReplicationController、Job、DaemonSet及直接通过kubelet管理(静态Pod)。每种控制器对Pod的重启策略要求如下

    •  RC和DaemonSet:必须设置为Always,需要保证该容器持续运行
    • Job:OnFailure或Never,确保容器执行完成后不再重启
  • 相关阅读:
    [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例
    玩转Asp.net MVC 的八个扩展点
    float实例讲解
    C#高性能TCP服务的多种实现方式
    如何把SQLServer数据库从高版本降级到低版本?
    ASP.NET MVC Area使用-将Area设置成独立项目
    如何使用ping和tracert命令测试网站访问速度
    ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
    MVC Action Filter
    c#中单元测试
  • 原文地址:https://www.cnblogs.com/Wshile/p/12951292.html
Copyright © 2011-2022 走看看