提升ACK專有集群的etcd存儲(chǔ)容量上限
更新時(shí)間:
ACK專有集群最初使用的etcd版本是社區(qū)v3.3.8,其支持的最大Backend DB Size是2 GB。當(dāng)集群中寫入的etcd存儲(chǔ)超過2 GB時(shí),則會(huì)出現(xiàn)無法寫入etcd的情況。本文介紹如何通過升級(jí)etcd版本到v3.4.3來提升ACK專有集群的etcd存儲(chǔ)容量上限。
前提條件
ACK專有集群的etcd版本小于v3.4.3。
對(duì)etcd存儲(chǔ)的需求大于2 GB。如果沒有此需求,則可以不用升級(jí)。
背景信息
etcd社區(qū)v3.4.3版本允許寫入100 GB的etcd存儲(chǔ),可以解決etcd存儲(chǔ)不足的問題。
操作步驟
通過SSH依次登錄到etcd所在的Master節(jié)點(diǎn),確認(rèn)當(dāng)前etcd版本是v3.3.8。
執(zhí)行下面的Shell腳本,腳本將會(huì)下載etcd-v3.4.3 binary并且啟動(dòng)新版本。
說明請(qǐng)對(duì)節(jié)點(diǎn)進(jìn)行逐個(gè)升級(jí),確保升級(jí)節(jié)點(diǎn)Ready后再升級(jí)其他節(jié)點(diǎn)的etcd。
因?yàn)閑tcd具有高可用性,所以升級(jí)不會(huì)導(dǎo)致業(yè)務(wù)訪問etcd異常。
#!/usr/bin/env bash etcdbin=http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/etcd/etcd-v3.4.3/etcd etcdctlbin=http://aliacs-k8s-cn-hangzhou.oss.aliyuncs.com/etcd/etcd-v3.4.3/etcdctl function download(){ wget -O etcd ${etcdbin} wget -O etcdctl ${etcdctlbin} chmod +x {etcd,etcdctl} mv etcd /usr/bin/etcd mv etcdctl /usr/bin/etcdctl etcd --version } function config() { ETCD_FILE=/lib/systemd/system/etcd.service sed -i "/ETCD_EXPERIMENTAL_BACKEND_BBOLT_FREELIST_TYPE/ d" ${ETCD_FILE} sed -i "/ETCD_QUOTA_BACKEND_BYTES/ d" ${ETCD_FILE} sed -i "/^\[Service\]/a\Environment=\"ETCD_EXPERIMENTAL_BACKEND_BBOLT_FREELIST_TYPE=map\"" ${ETCD_FILE} sed -i "/^\[Service\]/a\Environment=\"ETCD_QUOTA_BACKEND_BYTES=100000000000\"" ${ETCD_FILE} sed -i "s/initial-cluster-state new/initial-cluster-state existing/g" ${ETCD_FILE} systemctl daemon-reload systemctl restart etcd } download; config ENDPOINTS=`ps -eaf|grep etcd-servers|grep -v grep|awk -F "=" '{print $22}'|awk -F " " '{print $1}'` ETCDCTL_API=3 etcdctl \ --endpoints=${ENDPOINTS} \ --cacert=/var/lib/etcd/cert/ca.pem \ --cert=/var/lib/etcd/cert/etcd-client.pem \ --key=/var/lib/etcd/cert/etcd-client-key.pem \ member list
執(zhí)行以下命令,確認(rèn)etcd進(jìn)程啟動(dòng)成功。
ps aux|grep etcd
后續(xù)步驟
檢查和確認(rèn)etcd的健康狀況。
ETCDCTL_API=3 etcdctl --endpoints=${ENDPOINTS} \
--cacert=/var/lib/etcd/cert/ca.pem \
--cert=/var/lib/etcd/cert/etcd-client.pem \
--key=/var/lib/etcd/cert/etcd-client-key.pem endpoint health
預(yù)期輸出:
ENDPOINTS is healthy
文檔內(nèi)容是否對(duì)您有幫助?