使用 kind 搭建 kubernetes 集群

文章目录

    • 架构概览
    • 环境准备
      • linux
      • kind
      • docker
      • kubectl
      • helm(可选)
    • 环境配置
      • 配置文件
      • 集群创建

kind 是一个非常方便的用于创建 kubernetes 测试集群的工具,可以基于 docker 环境快速构件集群环境,方便进行学习测试!

使用 kind 搭建 kubernetes 集群_第1张图片

架构概览

使用 kind 搭建 kubernetes 集群_第2张图片

环境准备

linux

可参考:简易最小化虚拟机安装配置(CentOS-7-Minimal)

kind

kind 官网下载二进制包进行安装~

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.14.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind

docker

基础环境,kind 是以 docker 为底座,以 容器 为 node 的理念所设计开发的快速构建测试集群环境的工具。

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all && yum makecache fast
yum -y install docker-ce
systemctl start docker
systemctl enable docker

也可参考:Docker 学习笔记-01:安装

kubectl

Kubernetes 命令行工具 kubectl 允许您对 Kubernetes 集群运行命令。您可以使用 kubectl 部署应用程序、检查和管理集群资源以及查看日志。有关更多信息,包括 kubectl 操作的完整列表,请参阅 kubectl 参考文档。

curl -LO https://dl.k8s.io/release/v1.21.1/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl

helm(可选)

Kubernates 中的包管理器,可以用于统一管理 Kubernates 中的相关资源和软件包

curl -LO https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
tar -C /tmp/ -zxvf helm-v3.7.2-linux-amd64.tar.gz
mv /tmp/linux-amd64/helm /usr/local/bin/helm
chmod +x /usr/local/bin/helm

环境配置

以安装 Kubernates V1.21.1 为例,介绍如何通过 kind 进行集群构建和使用

配置文件

kind 创建集群的时候可以指定使用配置文件,这里贴出官方提供的一份配置文件:

# this config file contains all config fields with comments
# NOTE: this is not a particularly useful config file
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
# patch the generated kubeadm config with some extra settings
kubeadmConfigPatches:
- |
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration
  evictionHard:
    nodefs.available: "0%"
# patch it further using a JSON 6902 patch
kubeadmConfigPatchesJSON6902:
- group: kubeadm.k8s.io
  version: v1beta2
  kind: ClusterConfiguration
  patch: |
    - op: add
      path: /apiServer/certSANs/-
      value: my-hostname
# 1 control plane node and 3 workers
nodes:
# the control plane node config
- role: control-plane
# the three workers
- role: worker
- role: worker
- role: worker

在这份文件中,配置了一个(1控制面板3工作节点的集群),更多配置详细见文档:kind 配置

集群创建

基于配置文件,直接创建一个多节点集群(V1.21.1)

[root@evm-docker yaml]# kind create cluster --name multi-node --image kindest/node:v1.21.1 --config kind-example-config.yaml
Creating cluster "multi-node" ...
 ✓ Ensuring node image (kindest/node:v1.21.1) 
 ✓ Preparing nodes      
 ✓ Writing configuration  
 ✓ Starting control-plane ️ 
 ✓ Installing CNI  
 ✓ Installing StorageClass  
 ✓ Joining worker nodes  
Set kubectl context to "kind-multi-node"
You can now use your cluster with:

kubectl cluster-info --context kind-multi-node

Have a nice day! 

执行命名后可以看到,kind 在创建集群时,会依次进行:

  1. 拉取镜像
  2. 准备节点
  3. 写入配置
  4. 启动控制面板
  5. 安装容器网络接口
  6. 安装存储类
  7. 加入工作节点

接下来,使用 kubectl 查看集群节点信息,使用 docker 查看容器(即集群节点)信息

[root@evm-docker yaml]# kubectl get nodes -o wide
NAME                       STATUS   ROLES                  AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE       KERNEL-VERSION                CONTAINER-RUNTIME
multi-node-control-plane   Ready    control-plane,master   2m10s   v1.21.1   172.18.0.6    <none>        Ubuntu 21.04   3.10.0-1160.66.1.el7.x86_64   containerd://1.5.2
multi-node-worker          Ready    <none>                 92s     v1.21.1   172.18.0.7    <none>        Ubuntu 21.04   3.10.0-1160.66.1.el7.x86_64   containerd://1.5.2
multi-node-worker2         Ready    <none>                 92s     v1.21.1   172.18.0.9    <none>        Ubuntu 21.04   3.10.0-1160.66.1.el7.x86_64   containerd://1.5.2
multi-node-worker3         Ready    <none>                 92s     v1.21.1   172.18.0.8    <none>        Ubuntu 21.04   3.10.0-1160.66.1.el7.x86_64   containerd://1.5.2
[root@evm-docker yaml]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                       NAMES
a78d35d1b926   kindest/node:v1.21.1   "/usr/local/bin/entr…"   2 minutes ago    Up 2 minutes    127.0.0.1:46675->6443/tcp   multi-node-control-plane
e18d33e18354   kindest/node:v1.21.1   "/usr/local/bin/entr…"   2 minutes ago    Up 2 minutes                                multi-node-worker2
f6e7ec59ef2a   kindest/node:v1.21.1   "/usr/local/bin/entr…"   2 minutes ago    Up 2 minutes                                multi-node-worker
5e5b4b589dd1   kindest/node:v1.21.1   "/usr/local/bin/entr…"   2 minutes ago    Up 2 minutes                                multi-node-worker3

由此可以看出其对应关系:Docker 容器 = Kubernates cluster 节点
通过上述安装后,一个基础的集群已经构建完成,可以进行使用了,其他相关配置参考 官网文档 进行配置即可!

你可能感兴趣的:(云原生,kubernetes,kind,docker)