2、k8s etcd 自簽證書


1、下載安裝、etcd頒發證書【master、各個node節點】

   ①、下載cfssl命令工具

#下載至 /usr/local/bin/cfssl 
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl

    ②、下載cfssljson【從cfssl獲取劫送輸出】

#下載至 /usr/local/bin/cfssljson 
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson

     ③、安裝cfssl-certinfo【查看證書信息】

#下載至 /usr/local/bin/cfssljson 
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo

      ④、將cfssl、cfssljson\cfssl-certinfot復制至usr/local/bin下面

#復制至usr/local/bin下
cp -rf cfssl cfssljson cfssl-certinfo /usr/local/bin
#操作權限
chmod +x cfssl cfssl-certinfo cfssljson

      ⑤、創建ca頒發機構配置

#創建文件夾
mkdir
/etc/opt/certs
#創建ca頒發機構配置 vi ca
-config.json
#配置信息 {
"signing": { "default": { "expiry": "175200h" #過期時間20年 }, "profiles": { "server": { "expiry": "175200h", "usages": [ "signing", "key encipherment", "server auth" ] }, "client": { "expiry": "175200h", "usages": [ "signing", "key encipherment", "client auth" ] }, "peer": { "expiry": "175200h", "usages": [ "signing", "key encipherment", "server auth", "client auth" ] } } } }

      ⑥、ca頒發機構證書配置

#創建文件
vi
ca-csr.json
#寫入配置 {
"CN": "etcd CA", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "guangdong", "ST": "shenzhen" } ] }

       ⑦、etcd域名證書

#創建文件
vi
server-csr.json
#寫入配置 {
"CN": "etcd", "hosts": [ "192.168.14.20",#master node 各etcd節點主機IP "192.168.14.21", "192.168.14.22" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "L": "guangdong", "ST": "shenzhen" } ] }

      ⑧、生成證書

#生成頒發機構證書 ca-key.pem、ca.pem、ca.csr
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

#生成 server-key.pem、server.pem、server.csr 指定profile=peer cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer server-csr.json | cfssljson -bare server

  2、安裝etcd 

      ①、下載etcd

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

 #下載etcd存放至【/usr/local/bin】
curl -L https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz -o /usr/local/bin/etcd.tar.gz

#解壓etcd【cd /usr/local/bin】 tar -xvf etcd.tar.gz

#將etcd etcdctl 移至/opt/etcd/bin【mkdir /opt/etcd/bin】
mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin

      ②、創建etcd配置文件

#創建etcd配置文件【cd /opt/etcd】
touch
etcd.conf
#讀寫權限
chmod 777 etcd.conf
#修改文件
vi etcd.conf

        ③、寫入配置【注意:去掉注釋】

#[Member] #成員
ETCD_NAME="k8s-etcd-1"  #名稱
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #數據文件
ETCD_LISTEN_PEER_URLS="https://172.17.217.232:2380" #監聽其他etcd發送數據端口
ETCD_LISTEN_CLIENT_URLS="https://172.17.217.232:2379" #監聽api server 發送端口

#[Clustering]#集群
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://172.17.217.232:2380" #向其他etcd發送數據端口
ETCD_ADVERTISE_CLIENT_URLS="https://172.17.217.232:2379"   #向api server 發送數據端口
ETCD_INITIAL_CLUSTER="k8s-etcd-1=https://172.17.217.232:2380,k8s-etcd-2=https://172.17.217.226:2380,k8s-etcd-3=https://172.17.217.228:2380" #etcd 集群地址
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" #etcd 通信token
ETCD_INITIAL_CLUSTER_STATE="new" #集群狀態new 新建,existing 已存在集群

          ④、創建etcd啟動服務文件

touch etcd.service

           ⑤、寫入服務配置

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=/opt/etcd/etcd.conf #配置文件
ExecStart=/opt/etcd/bin/etcd \  #etcd 二進制文件
--name=${ETCD_NAME} \
--data-dir=${ETCD_DATA_DIR} \
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS} \
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=${ETCD_INITIAL_CLUSTER_TOKEN} \
--initial-cluster-state=new \
--cert-file=/opt/etcd/ssl/server.pem \
--key-file=/opt/etcd/ssl/server-key.pem \
--peer-cert-file=/opt/etcd/ssl/server.pem \
--peer-key-file=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

        ⑥、移動啟動服務

mv etcd.service  /usr/lib/systemd/system

    3、將證書復制至/opt/etcd/ssl

         ①、復制證書

#創建ssl文件夾【如果沒有】
mkdir
/opt/etcd/ssl
#我生成的證書地址【你自己生成證書路徑】 cd
/home/ssl
#復制證書至 /opt/etcd/ssl
cp {ca,server,server-key}.pem /opt/etcd/ssl

      4、啟動服務

           ①、啟動服務

systemctl start etcd

            ②、出現錯誤

                 1)、找不到文件-->解決:去掉注釋

                2)、環境變量已存在-->解決:去掉啟動服務使用環境變量參數配置

                3)、 去掉配置【原因:https://blog.csdn.net/snipercai/article/details/101012124

  

                     修改后service文件:

                       

                4)、重載配置

#重載服務配置
systemctl daemon-reload

                5)、將以上etcd、證書、配置復制至各個Node節點【也可重復上面操作】

【master】 scp  /opt/etcd/*  root@k8s-node:/opt/etcd #master將etcd所有文件復制至node節點
【node】 mv /opt/etcd/etcd.service /usr/lib/systemd/system/ #將服務復制至服務啟動文件

                6)、修改node節點/opt/etcd/etcd.conf 配置文件

                7)、  刪除數據文件重新啟動服務【刪除數據文件=>修改配置后需要刪除】

#停止運行etcd【各個etcd】
sytemctl stop etcd

#刪除數據文件【各個etcd】
rm
-rf /var/lib/etcd/default.etcd

#重新啟動etcd ,啟動順序【master->node1->node2】
systemctl start etcd

#開機自啟
systemctl enable etcd

       5、查看etcd健康狀態

#etcd version【3.4.9,v3】【226服務器處於不健康狀態】
/opt/etcd/bin/etcdctl \
--cacert=/opt/etcd/ssl/ca.pem --key=/opt/etcd/ssl/server-key.pem --cert=/opt/etcd/ssl/server.pem \
--endpoints="https://172.17.217.232:2379,https://172.17.217.226:2379,https://172.17.217.228:2379" endpoint health
#etcd 低版本 【v2】
/opt/etcd/bin/etcdctl --ca-file=/opt/etcd/ssl/ca.pem --cert-file=/opt/etcd/ssl/server.pem --key-file=/opt/etcd/ssl/server-key.pem
--endpoints="https://172.17.217.232:2379,https://172.17.217.266:2379,https://172.17.217.228:2379" cluster-health

           1)、查看master防火牆出現錯誤  

#查看網絡狀態
firewall-cmd --state 【running】

     

            2)、 執行如下命令

systemctl stop firewalld;
pkill -f firewalld;
systemctl start firewalld

           3)、正常情況

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM