我已经使用Docker在Ubuntu VM上部署了Kubernetes集群。
没有TLS,它可以正常工作(在端口8080上)。
我使用Let的加密安全API服务器(端口6443),它的工作!当我的Kubelet想要使用https授权给主人时,我的问题就出现了。
这就是我推出Kubelet Api服务器的方式:
/hyperkube apiserver
--service-cluster-ip-range=10.0.0.1/24
--insecure-bind-address=127.0.0.1
--etcd-servers=http://127.0.0.1:4001
--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
--client-ca-file=/srv/kubernetes/ca.crt
--basic-auth-file=/srv/kubernetes/basic_auth.csv
--min-request-timeout=300
--tls-cert-file=/srv/kubernetes/server.cert
--tls-private-key-file=/srv/kubernetes/server.key
--token-auth-file=/srv/kubernetes/known_tokens.csv
--allow-privileged=true --v=4
这就是我推出Kubelet的方式:
/hyperkube kubelet \
--allow-privileged=true \
--api-servers=https://k8:6443 \
--kubeconfig=/srv/kubernetes/config.yaml \
--v=2 \
--address=0.0.0.0 \
--enable-server \
--containerized \
--cluster-dns=10.0.0.10 \
--cluster-domain=k8.local
这是config.yaml文件:
apiVersion: v1
kind: Config
clusters:
- name: k8.local
cluster:
insecure-skip-tls-verify: true
server: https://k8:6443
contexts:
- context:
cluster: "k8.local"
user: "node1"
name: development
current-context: development
users:
- name: node1
user:
client-certificate: /var/run/kubernetes/kubelet.crt
client-key: /var/run/kubernetes/kubelet.key
当我启动我的Kubelet时,日志说:
the server has asked for the client to provide credentials
。
我认为我对Kubelet的证书不对,但我不明白为什么。
你能帮助我吗?
10XX。
答案 0 :(得分:0)
您的客户端证书(/var/run/kubernetes/kubelet.crt)是否由以下标识的CA文件签名: - client-ca-file = / srv / kubernetes / ca.crt?
此外,您可以尝试替换
- cluster:
insecure-skip-tls-verify: true
server: https://k8:6443
使用:
- cluster
certificate-authority: /srv/kubernetes/ca.crt
server: https://k8:6443
我从未使用过基本身份验证或令牌身份验证,但是可能有这些标志需要基于密码的身份验证。如果您正在进行基于证书的纯身份验证,我也会尝试删除它们。
--basic-auth-file=/srv/kubernetes/basic_auth.csv
--token-auth-file=/srv/kubernetes/known_tokens.csv