CluasterAPI:建立管理集群
撰写日期:2023年04月05日。
首先
环境
-
- Management Clusterをインストールする環境は以下の通り
諸元
パラメータ
cpu
2コア
メモリ
4GB
disk
20GB
OS
Ubuntu 20.04.6 LTS
构建管理集群
-
- シングルノードkubernetesを構築します。本記事では公式ドキュメントに従って以下をVM clusterapiにインストールします。
kubectl
kind
docker
helm
以下の手順は全てclusterapiで行います。
请安装必需的软件包。
部署 kubectl
参考 https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
kubernetesのaptリポジトリをaptのソースリストに追加します。
$ sudo apt-get update
$ sudo apt-get install -y ca-certificates curl
$ sudo mkdir -m 0755 -p /etc/apt/keyrings
$ sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
$ echo “deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list
kubectlをインストールします。
$ sudo apt-get update
$ sudo apt-get install -y kubectl
$ kubectl version –client
WARNING: This version information is deprecated and will be replaced with the output from kubectl version –short. Use –output=yaml|json to get the full version.
Client Version: version.Info{Major:”1″, Minor:”26″, GitVersion:”v1.26.3″, GitCommit:”9e644106593f3f4aa98f8a84b23db5fa378900bd”, GitTreeState:”clean”, BuildDate:”2023-03-15T13:40:17Z”, GoVersion:”go1.19.7″, Compiler:”gc”, Platform:”linux/amd64″}
Kustomize Version: v4.5.7
WARNINGが出力されますが、コマンドの移行期によるエラーであり気にする必要はありません。いずれ–shortオプションの出力がデフォルトになります。ちなみに–shortオプションを指定するとWARNINGではないものの–shortオプションも将来的に削除予定であることを知らせるメッセージが表示されます。(2023/04/06時点)
$ kubectl version –client –short
Flag –short has been deprecated, and will be removed in the future. The –short output will become the default.
Client Version: v1.26.3
Kustomize Version: v4.5.7
Docker 安装
-
- 参考 https://docs.docker.com/engine/install/debian/
Docker Engineをインストールします。(Docker Desktopではない)
Dockerのaptリポジトリをaptのソースリストに追加します。
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
“deb [arch=”$(dpkg –print-architecture)” signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
“$(. /etc/os-release && echo “$VERSION_CODENAME”)” stable” | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Dockerをインストールします。
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo docker run hello-world
请安装Kind。
请安装Kind软件。
请进行Kind的安装。
-
- 参考 https://kind.sigs.k8s.io/docs/user/quick-start/#installation
kindはバイナリをダウンロードして/usr/local/binに置くだけです。
$ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
$ chmod +x ./kind
$ sudo mv ./kind /usr/local/bin/kind
Helm 安装
-
- 参考 https://helm.sh/docs/intro/install/
helmはバイナリをダウンロード、解凍、インストールしてくれるスクリプトを実行します。
/usr/local/binにhelmをインストールしてくれます。
インストールが終わったらインストールスクリプトは用済みなので消してしまいます。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz
Verifying checksum… Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
$ rm get_helm.sh
管理聚集建设
-
- 参考 https://cluster-api.sigs.k8s.io/user/quick-start.html
Management Clusterを構築するため、以下を実施します。
kindでシングルノードkubernetesクラスタを構築する。
clusterctlをインストールする。
ClusterAPIとBYOHをインストールする。
用kind构建一个单节点的Kubernetes集群。
ClusterAPIのPodを配置するkubernetesクラスタを構築します。5分くらいでできます。
$ sudo kind create cluster -n management-cluster
-n 指定しなくても良いですが、その場合クラスタ名はkindになります。
できたクラスタを確認します。
指定した名前management-clusterという名前のクラスタが出来ています。
$ sudo kind get clusters
management-cluster
kubeconfigは/root/.kube/configにあるのでクラスタ名を確認します。kind-management-clusterという名前で作成されています。
$ sudo cat /root/.kube/config
apiVersion: v1
clusters:
– cluster:
certificate-authority-data:
…
server: https://127.0.0.1:38347
name: kind-management-cluster
contexts:
– context:
cluster: kind-management-cluster
user: kind-management-cluster
name: kind-management-cluster
current-context: kind-management-cluster
kind: Config
preferences: {}
users:
– name: kind-management-cluster
user:
client-certificate-data:
…
client-key-data:
…
クラスタkind-management-clusterが起動していることを確認します。
$ sudo kubectl cluster-info –context kind-management-cluster
Kubernetes control plane is running at https://127.0.0.1:38347
CoreDNS is running at https://127.0.0.1:38347/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use ‘kubectl cluster-info dump’.
いちいちsudoするのが面倒くさいのでエイリアスを書いてしまいます。~/.bash_aliasesに書いておけば.bashrcに読み込み時に参照してくれます。
$ kubectl get node
E0329 14:33:07.032459 51327 memcache.go:265] couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp [::1]:8080: connect: connection refused
E0329 14:33:07.033005 51327 memcache.go:265] couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp [::1]:8080: connect: connection refused
E0329 14:33:07.034627 51327 memcache.go:265] couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp [::1]:8080: connect: connection refused
E0329 14:33:07.035707 51327 memcache.go:265] couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp [::1]:8080: connect: connection refused
E0329 14:33:07.037226 51327 memcache.go:265] couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp [::1]:8080: connect: connection refused
The connection to the server localhost:8080 was refused – did you specify the right host or port?
$ echo “alias kubectl=’sudo kubectl'” >> ~/.bash_aliases
$ source .bashrc
$ kubectl get node
NAME STATUS ROLES AGE VERSION
management-cluster-control-plane Ready control-plane 11m v1.25.3
安装clusterctl。
-
- clusterctlはManagement ClusterのLifeCycleManagement(LCM)のためのCLIツールです。このコマンドでClusterAPIを構築します。
-
- clusterctlのインストールはバイナリをダウンロードして/usr/local/binに配置するだけです。
-
- $ curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.3.5/clusterctl-linux-amd64 -o clusterctl
-
- $ sudo install -o root -g root -m 0755 clusterctl /usr/local/bin/clusterctl
-
- $ clusterctl version
- clusterctl version: &version.Info{Major:”1″, Minor:”3″, GitVersion:”v1.3.5″, GitCommit:”58770484dee6c99c10e32c06652e9f9643f78e9e”, GitTreeState:”clean”, BuildDate:”2023-03-02T15:57:13Z”, GoVersion:”go1.19.6″, Compiler:”gc”, Platform:”linux/amd64″}
进行管理群集的初始化
总结起来
-
- 今回はManagement Clusterを構築しました。
- 次回はWorkload Clusterを構築するVMをManagement Clusterに登録し、構築していきます。