Kind 構築/操作メモ
https://github.com/kubernetes-sigs/kind/blob/master/logo/logo.png
はじめに
Cluster APIを試してみようと思ったら、まずは何かしらのk8sクラスタを用意する必要があった。
Kindを使うのが手っ取り早そうなのと、今まで使ったことなかったので、この機会に試してみました。
インストール
前提条件
- 以下がインストールされていること
- Docker
- kubectl
(Kindのインストールには不要だが、k8sクラスタ作成後、k8sを操作をするために必要)
環境
- ベアメタル
- Ubuntu 20.04.1
- Docker 20.10.2
- kubectl v1.19.1
インストールのログ
$ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 97 100 97 0 0 302 0 --:--:-- --:--:-- --:--:-- 303
100 642 100 642 0 0 1042 0 --:--:-- --:--:-- --:--:-- 626k
100 7247k 100 7247k 0 0 490k 0 0:00:14 0:00:14 --:--:-- 998k
$ chmod +x ./kind
$ sudo mv kind /usr/local/bin
$ kind version
kind v0.9.0 go1.15.2 linux/amd64
各操作
クラスタ作成
$ kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.19.1) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Thanks for using kind! 😊
- Docker
- kubectl
(Kindのインストールには不要だが、k8sクラスタ作成後、k8sを操作をするために必要)
$ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 97 100 97 0 0 302 0 --:--:-- --:--:-- --:--:-- 303
100 642 100 642 0 0 1042 0 --:--:-- --:--:-- --:--:-- 626k
100 7247k 100 7247k 0 0 490k 0 0:00:14 0:00:14 --:--:-- 998k
$ chmod +x ./kind
$ sudo mv kind /usr/local/bin
$ kind version
kind v0.9.0 go1.15.2 linux/amd64
クラスタ作成
$ kind create cluster
Creating cluster "kind" ...
✓ Ensuring node image (kindest/node:v1.19.1) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✓ Starting control-plane 🕹️
✓ Installing CNI 🔌
✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:
kubectl cluster-info --context kind-kind
Thanks for using kind! 😊
kubeconfigも作成された。
中身を確認すると、apiserverのURLがhttps://127.0.0.1:39055
となっていた。
docke ps
でkindのコンテナができていることも確認できました。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55cc6a93dacb kindest/node:v1.19.1 "/usr/local/bin/entr…" 7 minutes ago Up 7 minutes 127.0.0.1:39055->6443/tcp kind-control-plane
ホストの39055
番がコンテナの6443
番にポートフォワードされている。
これによって、apiserverのエンドポイントhttps://127.0.0.1:39055
へのリクエストが、Kindコンテナの6443
番にフォワードされてapiserverに届くことがわかる。
クラスタ一覧
$ kind get clusters
kind
作成したクラスタの確認
$ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:39055
KubeDNS is running at https://127.0.0.1:39055/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready master 25h v1.19.1
$ kubectl get all -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-f9fd979d6-29hpt 1/1 Running 0 25h
kube-system pod/coredns-f9fd979d6-fcrsh 1/1 Running 0 25h
kube-system pod/etcd-kind-control-plane 1/1 Running 0 25h
kube-system pod/kindnet-sxmz9 1/1 Running 0 25h
kube-system pod/kube-apiserver-kind-control-plane 1/1 Running 0 25h
kube-system pod/kube-controller-manager-kind-control-plane 1/1 Running 0 25h
kube-system pod/kube-proxy-v5lvt 1/1 Running 0 25h
kube-system pod/kube-scheduler-kind-control-plane 1/1 Running 0 25h
local-path-storage pod/local-path-provisioner-78776bfc44-m5zkj 1/1 Running 0 25h
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 25h
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/kindnet 1 1 1 1 1 <none> 25h
kube-system daemonset.apps/kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 25h
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/coredns 2/2 2 2 25h
local-path-storage deployment.apps/local-path-provisioner 1/1 1 1 25h
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/coredns-f9fd979d6 2 2 2 25h
local-path-storage replicaset.apps/local-path-provisioner-78776bfc44 1 1 1 25h
アプリケーションのデプロイ
$ kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml
deployment.apps/hello-world created
$ kubectl expose deployment hello-world --type=NodePort --name=example-service
service/example-service exposed
$ kubectl port-forward --address localhost svc/example-service 8080:8080
Forwarding from 127.0.0.1:8080 -> 8080
Handling connection for 8080> 8080
別のターミナルから確認すると、アプリにアクセスできることが確認できました。
$ curl http://localhost:8080
Hello Kubernetes!
クラスタの削除
$ kind delete cluster --name kind
Deleting cluster "kind" ...
所感
非常に簡単にk8sクラスタを構築することができました。
アプリのテストとかで何でもいいからk8sを手軽に使いたいというときに便利そうです。
今回はシングルノード構成しか試しませんでしたが、マルチノードのクラスタをつくることもできるようです。
参考
Author And Source
この問題について(Kind 構築/操作メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/nakkoh/items/666ec990616e68220f99著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .