ENTRYPOINT与CMD
我们使用entrypoint指定的是可执行文件,cmd指定的是可执行文件所需要的参数
通过使用yaml文件指定执行的命令和参数
apiVersion: v1
kind: Pod
metadata:
name: kubia-ce
labels:
name: kubia-ce
spec:
containers:
- name: kubia-ce
image: luksa/kubia
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
command:
- "ls"
args:
- /var/
为容器设置环境变量
在声明pod时指定环境变量
apiVersion: v1
kind: Pod
metadata:
name: kubia-ce
labels:
name: kubia-ce
spec:
containers:
- name: kubia-ce
image: luksa/kubia
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
env:
- name: port
value: "8080"
需要注意的是,这里数字需要使用引号包裹,但是字符串不需要
ConfigMap
利用configMap将pod和配置解耦
configMap本质上就是一个键值对的映射,映射内容可以通过命令行,文件获取。
创建ConfigMap
#通过命令行
kubectl create configmap --from-literal=port=8080
#通过文件
kubectl create configmap --from-file=test.config
#注意通过文件创建的configmap不是将configmap中的键值对进行解析,设置成多个键值对,而是将文件名作为键,文件内容作为值,作为环境变量
如果引用不存在的configmap会发生什么?
kubernetes会正常调度pod并尝试运行所有的容器,引用不存在的configmap的容器会启动失败,其余容器可以正常启动,如果之后创建这个缺失的configmap,因为缺失configmap而启动失败的容器会自动启动,无需重新创建。
将configmap映射成为环境变量
apiVersion: v1
kind: Pod
metadata:
name: kubia-ce
labels:
name: kubia-ce
spec:
containers:
- name: kubia-ce
image: luksa/kubia
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
env:
- name: port
valueFrom:
configMapKeyRef:
name: testconfig
key: env
将configmap中的键值对全部映射成为环境变量
apiVersion: v1
kind: Pod
metadata:
name: kubia-ce
labels:
name: kubia-ce
spec:
containers:
- name: kubia-ce
image: luksa/kubia
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: testconfig
将configmap映射成为容器中的配置文件
apiVersion: v1
kind: Pod
metadata:
name: kubia-ce
labels:
name: kubia-ce
spec:
containers:
- name: kubia-ce
image: luksa/kubia
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /var/test
name: config
volumes:
- name: config
configMap:
name: fileconfig
将configmap中的每一个键值对,都以一个文件的形式挂载在/var/test下
挂载指定的条目至pod的文件夹
volums:
volumes:
- name: config
configMap:
name: fileconfig
items:
- key: my-nginx-config.conf#configmap中的键名
path: gzip.conf#挂载到容器中的文件名
挂载特定的文件
volumeMounts:
- mountPath: /var/test/test.config
name: config
subPath: my-niginx-config.conf#configmap中的文件名,
将configmap中指定的配置文件