新聞中心
PKI 證書(shū)和要求
Kubernetes 需要 PKI 證書(shū)才能進(jìn)行基于 TLS 的身份驗(yàn)證。如果你是使用 kubeadm 安裝的 Kubernetes, 則會(huì)自動(dòng)生成集群所需的證書(shū)。你還可以生成自己的證書(shū)。 例如,不將私鑰存儲(chǔ)在 API 服務(wù)器上,可以讓私鑰更加安全。此頁(yè)面說(shuō)明了集群必需的證書(shū)。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出尼瑪免費(fèi)做網(wǎng)站回饋大家。
集群是如何使用證書(shū)的
Kubernetes 需要 PKI 才能執(zhí)行以下操作:
- Kubelet 的客戶端證書(shū),用于 API 服務(wù)器身份驗(yàn)證
- Kubelet 服務(wù)端證書(shū), 用于 API 服務(wù)器與 Kubelet 的會(huì)話
- API 服務(wù)器端點(diǎn)的證書(shū)
- 集群管理員的客戶端證書(shū),用于 API 服務(wù)器身份認(rèn)證
- API 服務(wù)器的客戶端證書(shū),用于和 Kubelet 的會(huì)話
- API 服務(wù)器的客戶端證書(shū),用于和 etcd 的會(huì)話
- 控制器管理器的客戶端證書(shū)/kubeconfig,用于和 API 服務(wù)器的會(huì)話
- 調(diào)度器的客戶端證書(shū)/kubeconfig,用于和 API 服務(wù)器的會(huì)話
- 前端代理 的客戶端及服務(wù)端證書(shū)
Note: 只有當(dāng)你運(yùn)行 kube-proxy 并要支持 擴(kuò)展 API 服務(wù)器 時(shí),才需要 ?
front-proxy? 證書(shū)
etcd 還實(shí)現(xiàn)了雙向 TLS 來(lái)對(duì)客戶端和對(duì)其他對(duì)等節(jié)點(diǎn)進(jìn)行身份驗(yàn)證。
證書(shū)存放的位置
假如通過(guò) kubeadm 安裝 Kubernetes,大多數(shù)證書(shū)都存儲(chǔ)在 ?/etc/kubernetes/pki?。 本文檔中的所有路徑都是相對(duì)于該目錄的,但用戶賬戶證書(shū)除外,kubeadm 將其放在 ?/etc/kubernetes? 中。
手動(dòng)配置證書(shū)
如果你不想通過(guò) kubeadm 生成這些必需的證書(shū),你可以使用一個(gè)單一的根 CA 來(lái)創(chuàng)建這些證書(shū)或者直接提供所有證書(shū)。
單根 CA
你可以創(chuàng)建一個(gè)單根 CA,由管理員控制器它。該根 CA 可以創(chuàng)建多個(gè)中間 CA,并將所有進(jìn)一步的創(chuàng)建委托給 Kubernetes。
需要這些 CA:
| 路徑 | 默認(rèn) CN | 描述 |
|---|---|---|
| ca.crt,key | kubernetes-ca | Kubernetes 通用 CA |
| etcd/ca.crt,key | etcd-ca | 與 etcd 相關(guān)的所有功能 |
| front-proxy-ca.crt,key | kubernetes-front-proxy-ca | 用于 前端代理 |
上面的 CA 之外,還需要獲取用于服務(wù)賬戶管理的密鑰對(duì),也就是 ?sa.key? 和 ?sa.pub?。
下面的例子說(shuō)明了上表中所示的 CA 密鑰和證書(shū)文件。
/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/ca.key
/etc/kubernetes/pki/etcd/ca.crt
/etc/kubernetes/pki/etcd/ca.key
/etc/kubernetes/pki/front-proxy-ca.crt
/etc/kubernetes/pki/front-proxy-ca.key
所有的證書(shū)
如果你不想將 CA 的私鑰拷貝至你的集群中,你也可以自己生成全部的證書(shū)。
需要這些證書(shū):
| 默認(rèn) CN | 父級(jí) CA | O (位于 Subject 中) | 類型 | 主機(jī) (SAN) |
|---|---|---|---|---|
| kube-etcd | etcd-ca | server, client | , , localhost, 127.0.0.1 |
|
| kube-etcd-peer | etcd-ca | server, client | , , localhost, 127.0.0.1 |
|
| kube-etcd-healthcheck-client | etcd-ca | client | ||
| kube-apiserver-etcd-client | etcd-ca | system:masters | client | |
| kube-apiserver | kubernetes-ca | server | , , , [1] |
|
| kube-apiserver-kubelet-client | kubernetes-ca | system:masters | client | |
| front-proxy-client | kubernetes-front-proxy-ca | client |
[1]: 用來(lái)連接到集群的不同 IP 或 DNS 名 (就像 kubeadm 為負(fù)載均衡所使用的固定 IP 或 DNS 名,?kubernetes?、?kubernetes.default?、?kubernetes.default.svc?、 ?kubernetes.default.svc.cluster?、?kubernetes.default.svc.cluster.local?)。
其中,?kind ?對(duì)應(yīng)一種或多種類型的 x509 密鑰用途:
| kind | 密鑰用途 |
|---|---|
| server | 數(shù)字簽名、密鑰加密、服務(wù)端認(rèn)證 |
| client | 數(shù)字簽名、密鑰加密、客戶端認(rèn)證 |
Note:
上面列出的 Hosts/SAN 是推薦的配置方式;如果需要特殊安裝,則可以在所有服務(wù)器證書(shū)上添加其他 SAN。
Note:
對(duì)于 kubeadm 用戶:
- 不使用私鑰,將證書(shū)復(fù)制到集群 CA 的方案,在 kubeadm 文檔中將這種方案稱為外部 CA。
- 如果將以上列表與 kubeadm 生成的 PKI 進(jìn)行比較,你會(huì)注意到,如果使用外部 etcd,則不會(huì)生成 ?
kube-etcd?、?kube-etcd-peer? 和 ?kube-etcd-healthcheck-client? 證書(shū)。
證書(shū)路徑
證書(shū)應(yīng)放置在建議的路徑中(以便 kubeadm 使用)。無(wú)論使用什么位置,都應(yīng)使用給定的參數(shù)指定路徑。
| 默認(rèn) CN | 建議的密鑰路徑 | 建議的證書(shū)路徑 | 命令 | 密鑰參數(shù) | 證書(shū)參數(shù) |
|---|---|---|---|---|---|
| etcd-ca | etcd/ca.key | etcd/ca.crt | kube-apiserver | --etcd-cafile | |
| kube-apiserver-etcd-client | apiserver-etcd-client.key | apiserver-etcd-client.crt | kube-apiserver | --etcd-keyfile | --etcd-certfile |
| kubernetes-ca | ca.key | ca.crt | kube-apiserver | --client-ca-file | |
| kubernetes-ca | ca.key | ca.crt | kube-controller-manager | --cluster-signing-key-file | --client-ca-file, --root-ca-file, --cluster-signing-cert-file |
| kube-apiserver | apiserver.key | apiserver.crt | kube-apiserver | --tls-private-key-file | --tls-cert-file |
| kube-apiserver-kubelet-client | apiserver-kubelet-client.key | apiserver-kubelet-client.crt | kube-apiserver | --kubelet-client-key | --kubelet-client-certificate |
| front-proxy-ca | front-proxy-ca.key | front-proxy-ca.crt | kube-apiserver | --requestheader-client-ca-file | |
| front-proxy-ca | front-proxy-ca.key | front-proxy-ca.crt | kube-controller-manager | --requestheader-client-ca-file | |
| front-proxy-client | front-proxy-client.key | front-proxy-client.crt | kube-apiserver | --proxy-client-key-file | --proxy-client-cert-file |
| etcd-ca | etcd/ca.key | etcd/ca.crt | etcd | --trusted-ca-file, --peer-trusted-ca-file | |
| kube-etcd | etcd/server.key | etcd/server.crt | etcd | --key-file | --cert-file |
| kube-etcd-peer | etcd/peer.key | etcd/peer.crt | etcd | --peer-key-file | --peer-cert-file |
| etcd-ca | etcd/ca.crt | etcdctl | --cacert | ||
| kube-etcd-healthcheck-client | etcd/healthcheck-client.key | etcd/healthcheck-client.crt | etcdctl | --key | --cert |
注意事項(xiàng)同樣適用于服務(wù)帳戶密鑰對(duì):
| 私鑰路徑 | 公鑰路徑 | 命令 | 參數(shù) |
|---|---|---|---|
| sa.key | kube-controller-manager | --service-account-private-key-file | |
| sa.pub | kube-apiserver | --service-account-key-file |
下面的例子展示了自行生成所有密鑰和證書(shū)時(shí)所需要提供的文件路徑。 這些路徑基于前面的表格。
/etc/kubernetes/pki/etcd/ca.key
/etc/kubernetes/pki/etcd/ca.crt
/etc/kubernetes/pki/apiserver-etcd-client.key
/etc/kubernetes/pki/apiserver-etcd-client.crt
/etc/kubernetes/pki/ca.key
/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/apiserver.key
/etc/kubernetes/pki/apiserver.crt
/etc/kubernetes/pki/apiserver-kubelet-client.key
/etc/kubernetes/pki/apiserver-kubelet-client.crt
/etc/kubernetes/pki/front-proxy-ca.key
/etc/kubernetes/pki/front-proxy-ca.crt
/etc/kubernetes/pki/front-proxy-client.key
/etc/kubernetes/pki/front-proxy-client.crt
/etc/kubernetes/pki/etcd/server.key
/etc/kubernetes/pki/etcd/server.crt
/etc/kubernetes/pki/etcd/peer.key
/etc/kubernetes/pki/etcd/peer.crt
/etc/kubernetes/pki/etcd/healthcheck-client.key
/etc/kubernetes/pki/etcd/healthcheck-client.crt
/etc/kubernetes/pki/sa.key
/etc/kubernetes/pki/sa.pub
為用戶帳戶配置證書(shū)
你必須手動(dòng)配置以下管理員帳戶和服務(wù)帳戶:
| 文件名 | 憑據(jù)名稱 | 默認(rèn) CN | O (位于 Subject 中) |
|---|---|---|---|
| admin.conf | default-admin | kubernetes-admin | system:masters |
| kubelet.conf | default-auth | system:node: (參閱注釋) |
system:nodes |
| controller-manager.conf | default-controller-manager | system:kube-controller-manager | |
| scheduler.conf | default-scheduler | system:kube-scheduler |
Note: ?
kubelet.conf? 中 ?? 的值 必須 與 kubelet 向 apiserver 注冊(cè)時(shí)提供的節(jié)點(diǎn)名稱的值完全匹配。
- 對(duì)于每個(gè)配置,請(qǐng)都使用給定的 CN 和 O 生成 x509 證書(shū)/密鑰偶對(duì)。
- 為每個(gè)配置運(yùn)行下面的 ?
kubectl?命令:
KUBECONFIG= kubectl config set-cluster default-cluster --server=https://:6443 --certificate-authority --embed-certs
KUBECONFIG= kubectl config set-credentials --client-key .pem --client-certificate .pem --embed-certs
KUBECONFIG= kubectl config set-context default-system --cluster default-cluster --user
KUBECONFIG= kubectl config use-context default-system
這些文件用途如下:
| 文件名 | 命令 | 說(shuō)明 |
|---|---|---|
| admin.conf | kubectl | 配置集群的管理員 |
| kubelet.conf | kubelet | 集群中的每個(gè)節(jié)點(diǎn)都需要一份 |
| controller-manager.conf | kube-controller-manager | 必需添加到 manifests/kube-controller-manager.yaml 清單中 |
| scheduler.conf | kube-scheduler | 必需添加到 manifests/kube-scheduler.yaml 清單中 |
下面是前表中所列文件的完整路徑。
/etc/kubernetes/admin.conf
/etc/kubernetes/kubelet.conf
/etc/kubernetes/controller-manager.conf
/etc/kubernetes/scheduler.conf
當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)kubernetes教程:KubernetesPKI證書(shū)和要求
網(wǎng)頁(yè)地址:http://www.fisionsoft.com.cn/article/dpcjcod.html


咨詢
建站咨詢
