すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:専用Kubernetesクラスターのetcdの容量を増やす

最終更新日:Oct 30, 2024

専用Kubernetesクラスターは、デフォルトでetcd v3.3.8を使用します。これは、最大2 GBをサポートするバックエンドストアとして機能します。 etcdに格納されているデータが2 GBに達すると、クラスターはetcdにデータを書き込むことができなくなります。 このトピックでは、etcdをv3.4.3にアップグレードする方法について説明します。 これにより、専用Kubernetesクラスターのetcdの容量が増加します。

前提条件

  • etcdバージョンは3.4.3より前です。

  • 2 GBを超えるデータをetcdに保存する必要があります。 必要がない場合、アップグレードは必須ではありません。

背景情報

公開されているバージョンのetcd 3.4.3は、最大100 GBのストレージを提供します。

手順

  1. SSHを使用して、etcdがインストールされているマスターノードにログインし、現在のetcdバージョンが3.3.8であることを確認します。

  2. 次のシェルスクリプトを実行して、etcd-v3.4.3バイナリをダウンロードし、新しいバージョンを開始します。

    説明
    • 各ノードでアップグレードを実行します。 アップグレードされたノードが準備完了状態になるまで待ってから、次のノードに進みます。

    • etcdは非常に利用可能です。 アップグレード中でも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
  3. 次のコマンドを実行して、etcdが実行中かどうかを確認します。

    ps aux|grep etcd

次のステップ

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
ENDPOINTS is healthy