使用Kubernetes集群构建工具kind来尝试一下
每次想确认Kubernetes的运行情况时都要用kubeadm重启集群太麻烦了,所以我在寻找一种简单的构建工具,发现了一个名叫kind的工具,我打算试用一下。
环境
Mac OS:卡特利纳版本 10.15.2
Kubernetes 是什么?
简单地描述一下Kubernetes,它是一个开源的容器编排引擎。而容器是一种程序运行环境的虚拟化方法之一。通过使用Kubernetes,可以管理多台计算机上的容器。Kubernetes集群的基本配置如下。
Kubernetes集群分为两个组:Master节点和Worker节点。Master节点负责接收用户的容器部署指令、进行调度等操作,而Worker节点负责实际执行容器。容器的调度是以Pod为单位进行的。如果需要进行Pod间通信或者与集群外的Pod通信,可以通过Service进行通信。
“Kind” 的意思是什么?
インストール
要运行”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
容器部署
我将部署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
$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)