Kubernetes 0-1 二進(jìn)制搭建K8S(二)部署etcd集群

Run Rsyslog server in Kubernetes - ITNEXT

寫在前面

記錄和分享使用二進(jìn)制搭建K8S集群的詳細(xì)過程窜觉,由于操作比較冗長夏块,大概會分四篇寫完:

  1. 機(jī)器準(zhǔn)備
  2. 部署etcd集群
  3. 部署Master
  4. 部署Node

etcd作為k8s的數(shù)據(jù)庫,需要首先安裝扬舒,為其他組件做服務(wù)基礎(chǔ)阐肤。

etcd是一個分布式的數(shù)據(jù)庫系統(tǒng),為了模擬etcd的高可用讲坎,我們將etcd部署在三臺虛擬機(jī)上孕惜,正好就部署在K8S集群所使用的三臺機(jī)器上吧。

etcd集群晨炕,K8S組件之間通信衫画,為了安全可靠,我們最好啟用HTTPS安全機(jī)制府瞄。K8S提供了基于CA簽名的雙向數(shù)字證書認(rèn)證方式和簡單的基于HTTP Base或Token的認(rèn)證方式碧磅,其中CA證書方式的安全性最高。我們使用cfssl為我們的K8S集群配置CA證書遵馆,此外也可以使用openssl鲸郊。

安裝cfssl

在Master機(jī)器執(zhí)行:

cd /root/kubernetes/resources
cp cfssl_linux-amd64 /usr/bin/cfssl
cp cfssljson_linux-amd64 /usr/bin/cfssljson
cp cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
chmod +x /usr/bin/cfssl /usr/bin/cfssljson /usr/bin/cfssl-certinfo

在所有機(jī)器執(zhí)行:

mkdir /etc/etcd/ssl -p

制作etcd證書

在Master機(jī)器執(zhí)行:

mkdir /root/kubernetes/resources/cert/etcd -p
cd /root/kubernetes/resources/cert/etcd

編輯ca-config.json

vim ca-config.json

寫入文件內(nèi)容如下:

{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "etcd": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}

編輯ca-csr.json:

vim ca-csr.json

寫入文件內(nèi)容如下:

{
    "CN": "etcd ca",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Hunan",
            "ST": "Changsha"
        }
    ]
}

生成ca證書和密鑰:

cfssl gencert -initca ca-csr.json | cfssljson -bare ca

編輯server-csr.json:

vim server-csr.json

寫入文件內(nèi)容如下:

{
    "CN": "etcd",
    "hosts": [
        "192.168.115.131",
        "192.168.115.132",
        "192.168.115.133"
        ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Hunan",
            "ST": "Changsha"
        }
    ]
}

hosts中配置所有Master和Node的IP列表。

生成etcd證書和密鑰

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd server-csr.json | cfssljson -bare server
# 此時目錄下會生成7個文件
ls
ca-config.json  ca.csr  ca-csr.json  ca-key.pem  ca.pem  server.csr  server-csr.json  server-key.pem  server.pem

拷貝證書

cp ca.pem server-key.pem  server.pem /etc/etcd/ssl
scp ca.pem server-key.pem  server.pem 192.168.115.132:/etc/etcd/ssl
scp ca.pem server-key.pem  server.pem 192.168.115.133:/etc/etcd/ssl

安裝etcd集群

在所有機(jī)器執(zhí)行:

cd /root/kubernetes/resources
tar -zxvf /root/kubernetes/resources/etcd-v3.4.9-linux-amd64.tar.gz
cp ./etcd-v3.4.9-linux-amd64/etcd ./etcd-v3.4.9-linux-amd64/etcdctl /usr/bin

配置etcd

這里開始命令需要分別在Master和Node機(jī)器執(zhí)行货邓,配置etcd.conf

vim /etc/etcd/etcd.conf

k8s-master01寫入文件內(nèi)容如下:

[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.115.131:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.115.131:2379,https://127.0.0.1:2379"

[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.115.131:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.115.131:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.115.131:2380,etcd02=https://192.168.115.132:2380,etcd03=https://192.168.115.133:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

k8s-node01寫入文件內(nèi)容如下:

[Member]
ETCD_NAME="etcd02"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.115.132:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.115.132:2379,https://127.0.0.1:2379"

[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.115.132:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.115.132:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.115.131:2380,etcd02=https://192.168.115.132:2380,etcd03=https://192.168.115.133:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

k8s-node02寫入文件內(nèi)容如下:

[Member]
ETCD_NAME="etcd03"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.115.133:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.115.133:2379,https://127.0.0.1:2379"

[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.115.133:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.115.133:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.115.131:2380,etcd02=https://192.168.115.132:2380,etcd03=https://192.168.115.133:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

這里開始在所有機(jī)器執(zhí)行秆撮,設(shè)置etcd服務(wù)配置文件

mkdir -p /var/lib/etcd
vim /usr/lib/systemd/system/etcd.service

執(zhí)行上行命令,寫入文件內(nèi)容如下:

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

[Service]
Type=notify
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd \
        --cert-file=/etc/etcd/ssl/server.pem \
        --key-file=/etc/etcd/ssl/server-key.pem \
        --peer-cert-file=/etc/etcd/ssl/server.pem \
        --peer-key-file=/etc/etcd/ssl/server-key.pem \
        --trusted-ca-file=/etc/etcd/ssl/ca.pem \
        --peer-trusted-ca-file=/etc/etcd/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

etcd3.4版本會自動EnvironmentFile文件中的環(huán)境變量换况,不需要再ExecStart的命令參數(shù)重復(fù)設(shè)置职辨,否則會報:"xxx" is shadowed by corresponding command-line flag的錯誤信息。

啟動etcd戈二,并且設(shè)置開機(jī)自動運(yùn)行etcd

systemctl daemon-reload
systemctl start etcd.service
systemctl enable etcd.service

檢查etcd集群的健康狀態(tài)

etcdctl endpoint health --cacert=/etc/etcd/ssl/ca.pem --cert=/etc/etcd/ssl/server.pem --key=/etc/etcd/ssl/server-key.pem --endpoints="https://192.168.115.131:2379,https://192.168.115.132:2379,https://192.168.115.133:2379"

輸出如下舒裤,說明etcd集群已經(jīng)部署成功。

https://192.168.115.133:2379 is healthy: successfully committed proposal: took = 15.805605ms
https://192.168.115.132:2379 is healthy: successfully committed proposal: took = 22.127986ms
https://192.168.115.131:2379 is healthy: successfully committed proposal: took = 24.829669ms

第二段落部署etcd集群愉快結(jié)束觉吭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腾供,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伴鳖,老刑警劉巖节值,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榜聂,居然都是意外死亡搞疗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門须肆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匿乃,“玉大人,你說我怎么就攤上這事休吠“夤。” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵瘤礁,是天一觀的道長阳懂。 經(jīng)常有香客問我,道長柜思,這世上最難降的妖魔是什么岩调? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮赡盘,結(jié)果婚禮上号枕,老公的妹妹穿的比我還像新娘。我一直安慰自己陨享,他們只是感情好葱淳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抛姑,像睡著了一般赞厕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上定硝,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天皿桑,我揣著相機(jī)與錄音,去河邊找鬼蔬啡。 笑死诲侮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的箱蟆。 我是一名探鬼主播沟绪,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼空猜!你這毒婦竟也來了近零?” 一聲冷哼從身側(cè)響起诺核,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤抄肖,失蹤者是張志新(化名)和其女友劉穎久信,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漓摩,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裙士,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了管毙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腿椎。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夭咬,靈堂內(nèi)的尸體忽然破棺而出啃炸,到底是詐尸還是另有隱情,我是刑警寧澤卓舵,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布南用,位于F島的核電站,受9級特大地震影響掏湾,放射性物質(zhì)發(fā)生泄漏裹虫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一融击、第九天 我趴在偏房一處隱蔽的房頂上張望筑公。 院中可真熱鬧,春花似錦尊浪、人聲如沸匣屡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捣作。三九已至,卻和暖如春工育,著一層夾襖步出監(jiān)牢的瞬間虾宇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工如绸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘱朽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓怔接,卻偏偏與公主長得像搪泳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扼脐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348