184. 【kubernetes】二進制文件方式安裝 Kubernetes 集群(一)

寫在前頭:

  • 細(xì)心點
  • 執(zhí)行命令前多檢查檢查
  • 保存文件前多檢查檢查
  • 出現(xiàn)錯誤之后,認(rèn)真看報錯信息

1. 創(chuàng)建 CA 根證書

openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=172.16.0.10" -days 36500 -out ca.crt
  • -subj: “/CN” 的值為 Master 主機名或 IP 地址。
  • days: 設(shè)置證書的有效期。
cp ca.* /etc/kubernetes/pki/

將生成的 ca.key 和 ca.crt 文件保存在 /etc/kubernetes/pki 目錄下。

2. 安裝 etcd 集群

從 Github 官網(wǎng)下載 etcd 二進制文件,解壓縮后得到 etcd 和 etcdctl 文件,將它們復(fù)制到 /usr/bin 目錄下。


下載地址:https://github.com/etcd-io/etcd/releases/tag/v3.5.1

tar -zxvf etcd-v3.5.1-linux-amd64.tar.gz 
cd etcd-v3.5.1-linux-amd64/
cp etcd etcdctl /usr/bin/

然后將其部署為一個 systemd 的服務(wù)

cat>/usr/lib/systemd/system/etcd.service <<EOF
[Unit]
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd
After=network.target

[Service]
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
Restart=always

[Install]
WantedBy=multi-user.target
EOF

其中,EnvironmentFile 指定配置文件的全路徑,其中的參數(shù)以環(huán)境變量的格式進行配置。
接下來先對 etcd 需要的 CA 證書配置進行說明。

3. 創(chuàng)建 etcd 的 CA 證書

先創(chuàng)建一個 x509 v3 配置文件 ectd_ssl.cnf,其中 subjectAltName 參數(shù)(alt_names)包括所有 etcd 主機的 IP 地址,

[ req ]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[ req_distinguished_name ]

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
IP.1 = 172.16.0.10
IP.2 = 172.16.0.11

然后用 openssl 命令創(chuàng)建 etcd 的服務(wù)端 CA 證書,包括 etcd_server.key 和 etcd_server.crt 文件,將其保存到 /etc/etcd/pki 目錄下:

openssl genrsa -out etcd_server.key 2048

openssl req -new -key etcd_server.key -config etcd_ssl.cnf -subj "/CN=etcd-server" -out etcd_server.csr

openssl x509 -req -in etcd_server.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -days 36500 -extensions v3_req -extfile etcd_ssl.cnf -out etcd_server.crt 

mkdir -p /etc/etcd/pki

cp etcd_server.key etcd_server.crt /etc/etcd/pki/

在創(chuàng)建客戶端使用的 CA 證書,包括 etcd_client.key 和 ectd_client.crt 文件,也將其保存到 /etc/etcd/pki 目錄下,后續(xù)供 kube-apiserver 連接 etcd 時使用:

openssl genrsa -out etcd_client.key 2048

openssl req -new -key etcd_client.key -config etcd_ssl.cnf -subj "/CN=etcd-client" -out etcd_client.csr

openssl x509 -req -in etcd_client.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -days 36500 -extensions v3_req -extfile etcd_ssl.cnf -out etcd_client.crt

cp etcd_client.key etcd_client.crt /etc/etcd/pki/

4. etcd 參數(shù)配置說明

接下來對 2 個 etcd 節(jié)點進行配置。etcd 節(jié)點的配置方式包括啟動參數(shù)、環(huán)境變量、配置文件等,本例使用環(huán)境變量方式將其配置到 /etc/etcd/etcd.conf 文件中,供 systemd 服務(wù)讀取。

#節(jié)點 1 配置
ETCD_NAME=etcd1
ETCD_DATA_DIR=/etc/etcd/data

ETCD_CERT_FILE=/etc/etcd/pki/etcd_server.crt
ETCD_KEY_FILE=/etc/etcd/pki/etcd_server.key
ETCD_TRUSTED_CA_FILE=/etc/kubernetes/pki/ca.crt
ETCD_CLIENT_CERT_AUTH=true
ETCD_LISTEN_CLIENT_URLS=https://172.16.0.10:2379
ETCD_ADVERTISE_CLIENT_URLS=https://172.16.0.10:2379
ETCD_PEER_CERT_FILE=/etc/etcd/pki/etcd_server.crt
ETCD_PEER_KEY_FILE=/etc/etcd/pki/etcd_server.key
ETCD_PEER_TRUSTED_CA_FILE=/etc/kubernetes/pki/ca.crt
ETCD_LISTEN_PEER_URLS=https://172.16.0.10:2380
ETCD_INITIAL_ADVERTISE_PEER_URLS=https://172.16.0.10:2380

ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER="etcd1=https://172.16.0.10:2380,etcd2=https://172.16.0.11:2380"
ETCD_INITIAL_CLUSTER_STATE=new



#節(jié)點 2 配置
ETCD_NAME=etcd2
ETCD_DATA_DIR=/etc/etcd/data

ETCD_CERT_FILE=/etc/etcd/pki/etcd_server.crt
ETCD_KEY_FILE=/etc/etcd/pki/etcd_server.key
ETCD_TRUSTED_CA_FILE=/etc/kubernetes/pki/ca.crt
ETCD_CLIENT_CERT_AUTH=true
ETCD_LISTEN_CLIENT_URLS=https://172.16.0.11:2379
ETCD_ADVERTISE_CLIENT_URLS=https://172.16.0.11:2379
ETCD_PEER_CERT_FILE=/etc/etcd/pki/etcd_server.crt
ETCD_PEER_KEY_FILE=/etc/etcd/pki/etcd_server.key
ETCD_PEER_TRUSTED_CA_FILE=/etc/kubernetes/pki/ca.crt
ETCD_LISTEN_PEER_URLS=https://172.16.0.11:2380
ETCD_INITIAL_ADVERTISE_PEER_URLS=https://172.16.0.11:2380

ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster
ETCD_INITIAL_CLUSTER="etcd1=https://172.16.0.10:2380,etcd2=https://172.16.0.11:2380"
ETCD_INITIAL_CLUSTER_STATE=new

注意:各個節(jié)點的 ETCD_NAMEip 都要對應(yīng)上,還有 ETCD_INITIAL_CLUSTER根據(jù)節(jié)點數(shù)修改。

5. 啟動 etcd 集群

基于 systemd 的配置在 2 臺主機上分別啟動 etcd 服務(wù),并設(shè)置為開機啟動:

systemctl restart etcd &&  systemctl enable etcd

然后用 etcdctl 客戶端命令行工具攜帶客戶端 CA 證書,運行 etcdctl endpoint health 命令訪問 etc 集群,驗證集群狀態(tài)是否正常,命令如下:

etcdctl --cacert=/etc/kubernetes/pki/ca.crt --cert=/etc/etcd/pki/etcd_client.crt --key=/etc/etcd/pki/etcd_client.key --endpoints=https://172.16.0.10:2379,https://172.16.0.11:2379 endpoint health 
驗證安裝成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容