使用Kubernetes集群构建工具kind来尝试一下

每次想确认Kubernetes的运行情况时都要用kubeadm重启集群太麻烦了,所以我在寻找一种简单的构建工具,发现了一个名叫kind的工具,我打算试用一下。

环境

Mac OS:卡特利纳版本 10.15.2

Kubernetes 是什么?

简单地描述一下Kubernetes,它是一个开源的容器编排引擎。而容器是一种程序运行环境的虚拟化方法之一。通过使用Kubernetes,可以管理多台计算机上的容器。Kubernetes集群的基本配置如下。

Kubernetesの構成4.png

Kubernetes集群分为两个组:Master节点和Worker节点。Master节点负责接收用户的容器部署指令、进行调度等操作,而Worker节点负责实际执行容器。容器的调度是以Pod为单位进行的。如果需要进行Pod间通信或者与集群外的Pod通信,可以通过Service进行通信。

“Kind” 的意思是什么?

kindの構成3.png

インストール

要运行”kind”,需要安装Docker。

$brew install docker

我们要在Kubernetes集群中放置容器,所以需要安装Kubernetes命令行接口kubectl。

$brew install kubectl 

最後にkind自身をインストールします.

$brew install kind

用 kind 创建一个集群。

使用kind命令创建集群并查看。在yaml文件中编写Master节点和Worker节点的配置,并通过–config选项传递。如果不传递,则创建一个只有一个Master节点的集群。

$kind create cluster --config a-controller-a-worker-mapping.yaml
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.16.3) ?
 ✓ Preparing nodes ? 
 ✓ Writing configuration ? 
 ✓ Starting control-plane ?️ 
 ✓ Installing CNI ? 
 ✓ Installing StorageClass ? 
 ✓ Joining worker nodes ? 
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Thanks for using kind! ?

使用的文件如下。本次将使用一个主节点和一个工作节点来创建配置。
– 在主节点上,角色为“control-plane”。
– 在工作节点上,角色为“worker”。

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
  extraPortMappings:
  - containerPort: 30000
    hostPort: 30000
    listenAddress: "0.0.0.0" #オプション defaultは "0.0.0.0"
    protocol: tcp # オプション defaultはtcp
extraPortMappings3.png

容器部署

我将部署nginx并进行测试。

$kubectl apply -f nginx.yaml 
pod/nginx created
service/nginx-svc created

使用的文件如下所示。

apiVersion : v1
kind : Pod
metadata :
 name : nginx
 labels :
   app : nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    ports:
    - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
  - protocol: TCP
    targetPort: 80
    port: 80
    nodePort: 30000

通过创建适用于Pod的服务,使得在集群外进行通信成为可能。

nginx_svc4.png
nginx.png

我成功地部署了,没有任何问题。

整理杂物

删除 Nginx

$kubectl delete -f nginx.yaml 
pod "nginx" deleted
service "nginx-svc" deleted

删除群集

$kind delete cluster
Deleting cluster "kind" ...

与kubeadm进行比较

Kubernetesクラスタ構築ツールとして有名なものにkubeadmがあります.kindとは違い複数のコンピュータ上でKubernetesクラスタを構築でき,本番環境にも使用できます.しかし,kindは1台分の作業でクラスタ構築できるのに対し,kubeadmは立ち上げるノード分の作業が発生するのでめんどくさいです.ですのでKubernetesの挙動を確かめたい時はkindの方が良いと思います.

minikubeとの比較

kindと同じ1台のコンピュータ上でのKubernetes構築ツールとして有名なものにminikubeがあります.クラスタ構築に必要な作業量はkindとほぼ変わりませんが1台の仮想マシンがMaster NodeとWorker Nodeの両方の役割を担っています.さらにノード数を増やす事ができず,挙動を試せる幅が狭くなります.例えばKubernetesの機能を使って複数台あるWorker Nodeの内のある特定のWorker Nodeにコンテナをデプロイするということを試せません.なのでKubernetesの挙動を確かめたい時はkindの方が良いと思います.

まとめ

kindを使用することで気軽にKubernetesの挙動を確認できます.なのでこれからKubernetesの挙動を確認したいときはkindを使っていこうと思います.

请提供更具体的上下文。参考可以是很多不同的东西,例如参考文献、参考书籍、参考价格等等。

亲切的
kubeadm
minikube
Kubernetes文档
Kubernetes实践指南 支持云原生应用的技术(impress top gear)

广告
将在 10 秒后关闭
bannerAds