配置信息可以文件的形式挂载到容器里,kv键值对怎么用文件表示?实际运行看看
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
a.b.json: "server {\n listen 80;\n server_name localhost;\n\n location / {\n root html;\n index index.html index.htm;\n }\n}"
a.c: jkjkjkkj
a1: sdasg
apiVersion: v1
kind: Pod
metadata:
name: test-configmap
spec:
containers:
- name: centos
image: centos
command: ["/bin/sh"]
args: ["-c","env;sleep 3600"]
env:
- name: MY_ENV_KEY
valueFrom:
configMapKeyRef:
name: my-configmap
key: a.c
- name: MY_ENV_KEY_1
valueFrom:
configMapKeyRef:
name: my-configmap
key: a1
volumeMounts:
- name: configmap-volumes
mountPath: /etc/config
volumes:
- name: configmap-volumes
configMap:
name: my-configmap
valueFrom.configMapKeyRef.key
如果配置错误会导致创建容器失败,好严格啊,但也是提前暴露问题。不过日志里没有具体的提示信息,只能看到创建容器失败。。。
通过请教大佬,学到了这个命令:kubectl describe pod test-configmap
,能查看到 pod 创建时的事件,其中就能看到是获取配置时出错了
command: ["/bin/sh"] args: ["-c","env;sleep 3600"]
:容器启动时运行多个命令
--container
指定
kubectl exec -it my-pod --container main-app -- /bin/bash
kubectl delete
:删除通过编排文件创建出来的资源
Secret 是一个主要用来存储密码 token 等一些敏感信息的资源对象。敏感信息是采用 base-64 编码保存起来的,相比储存在ConfigMap中更规范,更安全。
为啥更安全?这个加密又没有使用复杂算法、秘钥之类的
Secret 有4个类型
ServiceAccount 用于解决 pod 在集群里面的身份认证问题,身份认证信息是存在于 Secret 里面。
这里只讲了认证,鉴权还得 RBAC
根据容器对 CPU、内存资源的需求,对 pod 的服务质量进行一个分类,分别是 Guaranteed、Burstable 和 BestEffort。
当节点 memory 配额资源不足,kubelet会把一些低优先级的,或者说服务质量要求不高的pod 驱逐掉。按照先去除 BestEffort,再去除 Burstable 的顺序来驱逐 pod 的。
SecurityContext 主要是用于限制容器的一个行为,它能保证系统和其他容器的安全。这一块的能力不是 Kubernetes 或者容器 runtime 本身的能力,而是 Kubernetes 和 runtime 通过用户的配置,最后下传到内核里,再通过内核的机制让 SecurityContext 来生效。
主要是控制容器权限的,这里没有讲太多
当你所有的事情都听从大多数人的意见时,你注定成为“大多数人”