我一直在创建一个安装了kubernetes的亚马逊AMI,以用作EKS中的工作节点,我从amazon-eks s3存储桶中安装了kubelet二进制文件。
从k8s版本1.10.11升级到1.11.5后,我注意到安装kubelet时生成的x509证书有所不同。
如果我跳到安装了1.10.11的工作节点之一并运行此命令openssl s_client -connect localhost:10250 2>/dev/null | openssl x509 -noout -text
,则会得到X509v3 Subject Alternative Name
的以下输出:
DNS:ip-<my-ip>.eu-central-1.compute.internal, DNS:ip-<my-ip>, IP Address:<my-ip>
而如果我在安装了1.11.5的工作程序节点上运行相同的命令,则会得到X509v3 Subject Alternative Name
的以下输出:
DNS:ip-<my-ip>
两个节点之间唯一的变化是安装的kubernetes版本。
我是否错过了从1.11.x版本开始设置额外的使用者替代名称所需的所有内容,就像以前在v1.10.x中所做的一样?我要求将IP地址设置为IP Address:<my-ip>
格式的证书,该证书是我在版本1.10中免费获得的。
仅供参考,我正在使用以下参数运行kubelet:
ExecStart=/usr/bin/kubelet \
--address=0.0.0.0 \
--authentication-token-webhook \
--authorization-mode=Webhook \
--allow-privileged=true \
--cloud-provider=aws \
--cluster-dns=DNS_CLUSTER_IP \
--cluster-domain=cluster.local \
--cni-bin-dir=/opt/cni/bin \
--cni-conf-dir=/etc/cni/net.d \
--container-runtime=docker \
--max-pods=MAX_PODS \
--node-ip=INTERNAL_IP \
--network-plugin=cni \
--pod-infra-container-image=602401143452.dkr.ecr.REGION.amazonaws.com/eks/pause-amd64:3.1 \
--cgroup-driver=cgroupfs \
--register-node=true \
--kubeconfig=/var/lib/kubelet/kubeconfig \
--feature-gates=RotateKubeletServerCertificate=true \
--anonymous-auth=false \
--client-ca-file=CLIENT_CA_FILE \
--node-labels=env=NODE_LABEL
答案 0 :(得分:1)
就处理证书而言,1.10.11
和1.11.5
之间没有Kubernetes特定的区别。它可能与您正在使用的节点的特定EKS AMI有关(请确保它们匹配)
如果没有,则可以使用与Kubernetes主服务器中的证书相同的CA手动create验证Kubelet的证书。例如:
easyrsa
./easyrsa --subject-alt-name="IP:${MASTER_IP},"\
"IP:-<my-ip>,"\
"DNS:ip-<my-ip>.eu-central-1.compute.internal,"\
"DNS:ip-<my-ip>,"\
--days=10000 \
build-server-full server nopass
openssl
配置(csr.conf):
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = <country>
ST = <state>
L = <city>
O = <organization>
OU = <organization unit>
CN = <my-ip>
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = ip-<my-ip>.eu-central-1.compute.internal
DNS.2 = ip-<my-ip>
IP.1 = <my-ip>
[ v3_ext ]
authorityKeyIdentifier=keyid,issuer:always
basicConstraints=CA:FALSE
keyUsage=keyEncipherment,dataEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=@alt_names
创建CSR:
$ openssl req -new -key server.key -out server.csr -config csr.conf
创建证书:
$ openssl x509 -req -in server.csr -CA cluster-ca.crt -CAkey cluster-ca.key \
-CAcreateserial -out server.crt -days 10000 \
-extensions v3_ext -extfile csr.conf
cfssl