Kubernetes V1.12バイナリは、高可用性クラスタリングを展開します

環境:

高可用性環境のアーキテクチャ:
Kubernetes V1.12バイナリは、高可用性クラスタリングを展開します

コンポーネントのバージョン:

ソフトウェア
Linuxオペレーティングシステム CentOS7.5_x64
Kubernetes 1.12
ドッカー 18.xxそれを
Etcd 3.xの
フランネル 0.10

サーバーの役割:

役割 IP パッケージ
master01 192.168.1.43 KUBE-apiserver、KUBEコントローラマネージャ、KUBE-スケジューラetcd
master02 192.168.1.63 KUBE-apiserver、KUBEコントローラマネージャ、KUBE-スケジューラetcd
node01 192.168.1.30 kubelet、KUBE-プロキシ、ドッキングウィンドウ、フランネル、etcd
node02 192.168.1.51 kubelet、KUBE-プロキシ、ドッキングウィンドウ、フランネル
node03の 192.168.1.141 kubelet、KUBE-プロキシ、ドッキングウィンドウ、フランネル
ロードバランサ(マスター) 192.168.1.31 192.168.1.31(VIP) nginxのL4
バランサ(バックアップ)を読み込みます 192.168.1.186 nginxのL4

自己署名SSL証明書:

パッケージ 証明書を使用
etcd ca.pem、server.pem、サーバー-key.pem
フランネル ca.pem、server.pem、サーバー-key.pem
KUBE-apiserver ca.pem、server.pem、サーバー-key.pem
オムレツ Ckpem、F-Kiykpem
KUBE-プロキシ ca.pem、KUBE-proxy.pem、KUBE-プロキシkey.pem
kubectl ca.pem、admin.pem、管理者-key.pem

1. ETCDクラスタの展開

1.1インストールcfssl

curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl                #cfssl来生成证书
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson        #cfssljson传入json文件生成证书
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo      #cfssl-cetinfo查看生成证书信息
chmod +x /usr/local/bin/cfssl /usr/local/bin/cfssljson /usr/local/bin/cfssl-certinfo

1.2証明書の生成

# mkdir ~/k8s/etcd-cert -p
# cd ~/k8s/etcd-cert

CAルート証明書:

# cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "87600h"
    },
    "profiles": {
      "www": {
         "expiry": "87600h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF

CA要求は、証明書に署名しました。

# cat > ca-csr.json <<EOF
{
    "CN": "etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF

ETCDのSSL証明書が発行されます(A etcdノードのIPを追加します)

# cat > server-csr.json <<EOF
{
    "CN": "etcd",
    "hosts": [
    "192.168.1.43",
    "192.168.1.30",
    "192.168.1.51"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "L": "BeiJing",
            "ST": "BeiJing"
        }
    ]
}
EOF

証明書を生成します。

初始化ca根证书:
        cfssl gencert -initca ca-csr.json | cfssljson -bare ca -    #会生成ca-key.pem,ca.pem
生成证书:
        cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server     #会生成server-key,server
#说明:
        #-ca=ca.pem 指定ca
        #-ca-key=ca-key.pem 指定ca私钥
        #-config=ca-config.json 指定ca配置文件
        #-profile=www 应用配置文件中的www

1.3ETCDデータベースクラスタの展開

バイナリパッケージをダウンロードhttps://github.com/etcd-io/etcd/releases

バイナリパッケージを抽出します:

# cd ~/k8s
# tar -zxvf etcd-v3.3.10-linux-amd64.tar.gz
创建etcd目录:
# mkdir /opt/etcd/{cfg,bin,ssl} -p     #配置,可执行,证书目录

ディレクトリに実行可能ファイルを移動Etcd:

# cd ~/k8s/etcd-v3.3.10-linux-amd64
# mv etcd etcdctl /opt/etcd/bin/
# ls /opt/etcd/bin/
    etcd  etcdctl

ただ、etcディレクトリをSSLに生成されたファイルをコピーします。

# cd ~/k8s/etcd-cert
# cp *pem 
# ls /opt/etcd/ssl/
    ca-key.pem  ca.pem  server-key.pem  server.pem

etcdプロファイルの作成:

# cat <<EOF >/opt/etcd/cfg/etcd
#[Member]
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.1.43:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.1.43:2379"

#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.43:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.43:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.1.43:2380,etcd02=https://192.168.1.30:2380,etcd03=https://192.168.1.51:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF
  • ETCD_NAMEノード名
  • ETCD_DATA_DIRデータディレクトリ
  • クラスタ通信傍受アドレスをETCD_LISTEN_PEER_URLS
  • ETCD_LISTEN_CLIENT_URLSクライアントアクセスは、アドレスを聞きます
  • ETCD_INITIAL_ADVERTISE_PEER_URLSグループ広告アドレス
  • ETCD_ADVERTISE_CLIENT_URLSクライアント通知アドレス
  • ETCD_INITIAL_CLUSTERクラスタノードアドレス
  • ETCD_INITIAL_CLUSTER_TOKEN 集群Token
  • ETCD_INITIAL_CLUSTER_STATEは、クラスタの現在の状態に参加する、新しい、新しいクラスタがあり、既存の表現は、既存のクラスタに参加します

ファイルを管理systemctld作成:

cat <<EOF >/usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd
ExecStart=/opt/etcd/bin/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

ブートとetcd起動します。

systemctl daemon-reload && systemctl enable etcd && systemctl restart etcd

おすすめ

転載: blog.51cto.com/14257939/2436668
おすすめ