查看Secret通过环境变量暴露的条目
-> [root@kube0.vm] [~] k exec https-nginx env PATH=http://www.likecs.com/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=https-nginx FOO=bar ....... 使用私有的镜像仓库使用方法:创建一个docker-registry类型的secret,然后
创建一个docker-registry类型的secret。 --docker-server 用于指定仓库服务的地址。
k create secret docker-registry dockerregsecret --docker-username=zhangsan --docker-password=123 --docker-email=zhangsan@163.com在Pod中的containers.imagePullSecrets.name中引用。
apiVersion: v1 kind: Pod metadata: name: private-pod spec: imagePullSecrets: - name: dockerregsecret containers: - image: username/private:tag name: main StringData与二进制数据采用Base64编码,使Secret也能存储二进制数据,而纯文本值可以在secret.StringData中定义,但StringData字段是只写的,kubectl get -o yaml查看时会被Base64编码显示在data下。
注意事项在Kubernetes中定义容器时,镜像的ENTRYPOINT和CMD都可以被覆盖。但是在Docker中,镜像的ENTRYPOINT是不能覆盖的。
可以将configMapKeyRef.optional设置为true,这样即使ConfigMap不存在,容器也能启动。
小结对于环境变量:使用valueFrom.configMapKeyRef引用一个ConfigMap条目;使用envFrom.configMapRef引用全部,envFrom.prefix设置前缀。
对于命令行参数:containers.args无法直接引用ConfigMap,但是可以通过$(ENV_VAR_NAME)引用环境变量,间接引用了ConfigMap。
挂载文件夹会隐藏该文件夹中已存在的文件,挂载ConfigMap的单独条目不会隐藏其他文件
将ConfigMap暴露为卷可以达到热更新的效果。
每个pod默认都会挂载一个Secret,该Secret包含ca.crt、namespace、token,包含了从Pod内部安全访问Kubernetes Api服务器所需的全部信息。
采用Base64编码,使Secret也能存储二进制数据,而纯文本值可以在secret.StringData中定义,但StringData字段是只写的,kubectl get -o yaml查看时会被Base64编码显示在data下。