k8s 的容器command用法举例

问题描述以及解决:

问题一 CrashLoopBackOff

如容器运行报如下错误:

且在describe和kubelet日志中没有明确记录原因,基本都是因为command命令不合法导致

如需要运行多条命令,使用;不要使用&&

如下示例:

          command: ["/bin/sh"]

          args: ["-c","/usr/local/bin/redis_start;while true;do echo hello;sleep 1;done"]

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

k8s的command对应如上docker命令的[COMMAND] [ARG...]

1. 但在k8里这样报错,top必须得有个参数,错误写法:

apiVersion: v1    
kind: Pod    
metadata:    
  name: centos  
  labels:    
    app: centos    
spec:    
  containers:    
  - name: mycentos  
    image: centos  
    imagePullPolicy: IfNotPresent  
    command: ["top",]  

报错是:env找不到...

给top加上参数:

apiVersion: v1    
kind: Pod    
metadata:    
  name: centos  
  labels:    
    app: centos    
spec:    
  containers:    
  - name: mycentos  
    image: centos  
    imagePullPolicy: IfNotPresent  
    command: ["top","-b"]  

也可以这样写:

apiVersion: v1    
kind: Pod    
metadata:    
  name: centos  
  labels:    
    app: centos    
spec:    
  containers:    
  - name: mycentos  
    image: centos  
    imagePullPolicy: IfNotPresent  
    command: ["top"]  
    args: ["-b"]  

使用shell命令的写法:

apiVersion: v1    
kind: Pod    
metadata:    
  name: centos  
  labels:    
    app: centos    
spec:    
  containers:    
  - name: mycentos  
    image: centos  
    imagePullPolicy: IfNotPresent  
    command: ["/bin/sh"]  
    args: ["-c","while true;do echo hello;sleep 1;done"]  

或者这样:

apiVersion: v1      
kind: Pod      
metadata:      
  name: centos    
  labels:      
    app: centos      
spec:      
  containers:      
  - name: mycentos    
    image: centos    
    imagePullPolicy: IfNotPresent    
    command: ["/bin/sh","-c","while true;do echo hello;sleep 1;done"]  
 
原文地址:https://www.cnblogs.com/wxwgk/p/15216965.html