kubeasz を使用した Kubernetes デプロイメントのベストプラクティス

環境準備

  • 3台の8コア/16GBメモリ/500GB高速HDDサーバーと3台の16コア/32GBメモリ/500GB高速HDDサーバー
  • CentOS 7
  • SELinuxとファイアウォールの無効化
  • カーネルのアップグレード(参考:https://www.example.com/kernel-upgrade)

パスワードレスログインの設定


# 鍵ペアの作成
ssh-keygen

すべてのノード(自身を含む)に鍵をコピー
ssh-copy-id すべてのノードのIPアドレス

デプロイメント

1. ソースコード、バイナリファイル、またはオフラインイメージのダウンロード


export version=3.5.2
wget https://github.com/easzlab/kubeasz/releases/download/${version}/downloader
chmod +x ./downloader

2. kubeaszコード、バイナリ、デフォルトコンテナイメージのダウンロード


# 国内環境
./downloader -D

# 海外環境
./downloader -D -m standard

3. クラスタの作成


# コンテナとしてkubeaszを実行
./downloader -S

# 新しいクラスタ k8s-cluster の作成
docker exec -it kubeasz ezctl new k8s-cluster

# /etc/kubeasz/clusters/k8s-cluster/hosts と /etc/kubeasz/clusters/k8s-cluster/config.yml の設定
# vim hosts
# 'etcd'クラスタは奇数個のメンバー(1,3,5,...)を持つ必要があります
[etcd]
172.16.0.1
172.16.0.2
172.16.0.3

# マスターノード、各ノードに固有の 'node_name' を設定
# 注意: 'node_name' は小文字の英数字、'-' または '.' で構成され、
# 英数字で始まり、英数字で終わる必要があります
[kube_master]
172.16.0.1 node_name='control-01'
172.16.0.2 node_name='control-02'
172.16.0.3 node_name='control-03'

# ワーカーノード、各ノードに固有の 'node_name' を設定
# 注意: 'node_name' は小文字の英数字、'-' または '.' で構成され、
# 英数字で始まり、英数字で終わる必要があります
[kube_node]
172.16.0.4 node_name='compute-01'
172.16.0.5 node_name='compute-02'
172.16.0.6 node_name='compute-03'

# [オプション] harborサーバー、プライベートDockerレジストリ
# 'NEW_INSTALL': 'true' でharborサーバーをインストール; 'false' で既存のものと統合
[harbor]
#192.168.1.8 NEW_INSTALL=false

# [オプション] 外部からK8Sにアクセスするためのロードバランス
[ex_lb]
#192.168.1.6 LB_ROLE=backup APISERVER_VIP=192.168.1.250 APISERVER_PORT=8443
#192.168.1.7 LB_ROLE=master APISERVER_VIP=192.168.1.250 APISERVER_PORT=8443

# [オプション] クラスタのNTPサーバー
[chrony]
#192.168.1.1

[all:vars]
# --------- メイン変数 ---------------
# apiserversのセキュアポート
API_PORT="6443"

# クラスタコンテナランタイム: docker, podman
# k8sバージョン >= 1.24 の場合はdockerはサポートされません
CONTAINER_RUNTIME="podman"

# サポートされているネットワークプラグイン: calico, flannel, kube-router, cilium, kube-ovn
CLUSTER_NETWORK="flannel"

# kube-proxyのサービスプロキシモード: 'iptables' または 'ipvs'
PROXY_MODE="iptables"

# K8SサービスCIDR、ノード(ホスト)ネットワークと重複しない
SERVICE_CIDR="10.100.0.0/16"

# クラスタCIDR(Pod CIDR)、ノード(ホスト)ネットワークと重複しない
POD_CIDR="10.30.0.0/16"

# NodePort範囲
NODE_PORT_RANGE="30000-32767"

# クラスタDNSドメイン
CLUSTER_DNS_DOMAIN="local.cluster"

# -------- 追加変数(今はデフォルト値を変更しないでください)---
# バイナリディレクトリ
bin_dir="/opt/kube/binaries"

# デプロイディレクトリ(kubeaszワークスペース)
base_dir="/opt/kubeasz"

# 特定のクラスタ用ディレクトリ
cluster_dir="{{ base_dir }}/clusters/k8s-cluster"

# CAおよびその他のコンポーネント証明書/鍵ディレクトリ
cert_dir="/etc/kubernetes/certs"

# デフォルトの 'node_name' は空
node_name=''

4. クラスタのインストール


# 一括インストール
docker exec -it kubeasz ezctl setup k8s-cluster all
参考:

https://github.com/easzlab/kubeasz

タグ: Kubernetes kubeasz コンテナオーケストレーション クラスタデプロイメント インフラストラクチャ

8月1日 04:05 投稿