正在使用机密创建服务帐户,但是在创建pod时,看起来令牌和ca证书不会复制到pod中。
日志显示:
[2016-12-27 16:16:29,012][WARN ][io.fabric8.elasticsearch.discovery.k8s.K8sUnicastHostsProvider]
[James Dr. Power] Exception caught during discovery javax.ws.rs.WebApplicationException : HTTP 401 Unauthorized
pod的环境变量包括:
KUBERNETES_CA_CERTIFICATE_FILE=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
但是,目录/ var / run为空
es-master-gqq7m:/var/run# pwd
/var/run
es-master-gqq7m:/var/run# ls -la
total 0
drwxr-xr-x 2 root root 6 Jun 12 2015 .
drwxr-xr-x 9 root root 81 Jun 12 2015 ..
复制控制器的完整定义是here,包括:
spec:
serviceAccount: elasticsearch
env:
- name: KUBERNETES_CA_CERTIFICATE_FILE
value: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
[cstelly@smcluster ~]$ kubectl get serviceaccounts
NAME SECRETS AGE
default 1 29d
elasticsearch 1 4d
有什么想法吗?
谢谢!
作为对this的回应,目前apiconfig有标志
--admission-control=AlwaysAdmit \
关于音量信息,我跑了
kubectl describe pod <pod-name>
,我看到的唯一卷信息是:
Volumes:
storage:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
答案 0 :(得分:0)
创建容器时,应将服务帐户令牌密钥添加为卷。这是由ServiceAccount准入插件完成的。
有些问题:
如果您检查API中的某个正在运行的pod,它是否包含引用服务帐户令牌的卷和卷装?
您为API服务器配置了哪些录入插件?
答案 1 :(得分:0)
令牌本身是在准入控制处理期间创建的。
建议用于&gt; 1.4的设置是
--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota
请注意“ServiceAccount”部分!