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 投稿