Kind 是我很喜欢也一直在参与的项目,我计划将 Kind 相关的文章写成一个系列。(flag++) 这是第一篇。

Kind 介绍

Kind 是 Kubernetes In Docker 的缩写,顾名思义是使用 Docker 容器作为 Node 并将 Kubernetes 部署至其中的一个工具。官方文档中也把 Kind 作为一种本地集群搭建的工具进行推荐。

安装

二进制安装

Kind 使用 Golang 进行开发,在仓库的 Release 页面,已经上传了构建好的二进制,支持多种操作系统,可直接按需下载进行使用。

e.g.

# 下载最新的 0.2.0 版本
wget -O /usr/local/bin/kind https://github.com/kubernetes-sigs/kind/releases/download/0.2.0/kind-linux-amd64 && chmod +x /usr/local/bin/kind
复制代码

通过源码安装

如果你本地已经配置好了 Golang 的开发环境,那你可以直接通过源码进行安装。

e.g.

go get -u sigs.k8s.io/kind
复制代码

运行完上述命令后,会将 kind 的可执行文件放到 $(go env GOPATH)/bin 文件夹内,你可能需要将此目录加入到 $PATH 中。

或者也可以先 clone 源代码再通过 go build 进行构建。

依赖

  • Kind 的主要功能目前需要有 Docker 环境的支持,可参考 Docker 官方文档进行安装。

  • 如果需要操作集群,则需要安装 kubectl 命令行。安装方法可参考官方文档

搭建单节点集群

以下的演示均使用最新的代码(即通过源码安装)。

基础用法

搭建单节点集群是 Kind 最基础的功能。

e.g.

master $ kind create cluster --name moelove
Creating cluster "moelove" ...✓ Ensuring node image (kindest/node:v1.13.4) ?✓ Preparing nodes ?✓ Creating kubeadm config ?✓ Starting control-plane ?️
Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="moelove")"
kubectl cluster-info
复制代码

以上命令中, --name 是可选参数,如不指定,默认创建出来的集群名字为 kind

我们根据命令执行完的输出进行操作:

master $ export KUBECONFIG="$(kind get kubeconfig-path --name="moelove")"
master $ kubectl cluster-info
Kubernetes master is running at https://localhost:34458
KubeDNS is running at https://localhost:34458/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
master $ kubectl get nodes
NAME                    STATUS    ROLES     AGE       VERSION
moelove-control-plane   Ready     master    2m        v1.13.4
复制代码

以上命令中,kind get kubeconfig-path --name="moelove" 会返回该指定集群配置文件所在的路径。

可以看到单节点的 Kubernetes 已经搭建成功。

注意

  • 默认情况下,Kind 会先下载 kindest/node:v1.13.4 镜像,该镜像目前托管于 Docker Hub 上,下载时间取决于网络状况。
  • Kind 实际使用 kubeadm 进行集群的创建,对 kubeadm 有所了解的人都知道它默认使用的镜像在国内下载不到,所以需要自己解决网络问题。或者参考下面的方式:

Kind 在创建集群的时候,支持通过 --config 的参数传递配置文件给 Kind,在国内,我们可以通过使用国内镜像源的方式来加速集群的创建。(这个方法也适用于直接通过 kubeadm 搭建 Kubernetes 集群)

我们先通过以下命令删除刚才搭建的集群:

master $ kind delete  cluster --name moelove
Deleting cluster "moelove" ...
$KUBECONFIG is still set to use /root/.kube/kind-config-moelove even though that file has been deleted, remember to unset it
复制代码

接下来,将下面的配置内容保存至一个 YAML 文件中,比如名为 kind-config.yaml

kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3
kubeadmConfigPatches:
- |
  apiVersion: kubeadm.k8s.io/v1beta1
  kind: ClusterConfiguration
  metadata:
    name: config
  networking:
    serviceSubnet: 10.0.0.0/16
  imageRepository: registry.aliyuncs.com/google_containers
  nodeRegistration:
    kubeletExtraArgs:
      pod-infra-container-image: registry.aliyuncs.com/google_containers/pause:3.1
- |
  apiVersion: kubeadm.k8s.io/v1beta1
  kind: InitConfiguration
  metadata:
    name: config
  networking:
    serviceSubnet: 10.0.0.0/16
  imageRepository: registry.aliyuncs.com/google_containers
nodes:
- role: control-plane
复制代码

我们使用该配置文件搭建集群。

master $ kind create cluster --name moelove --config kind.yaml
Creating cluster "moelove" ...✓ Ensuring node image (kindest/node:v1.13.4) ?✓ Preparing nodes ?✓ Creating kubeadm config ?✓ Starting control-plane ?️
Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="moelove")"
kubectl cluster-info
复制代码

上面通过 --config 将我们的配置文件传递给 Kind 用于搭建集群,推荐国内用户使用这种方式

搭建高可用集群

Kind 也支持搭建高可用的 K8S 集群,不过只能通过配置文件来实现。可以直接将下面的内容保存至文件中,再将配置文件传递给 Kind 即可。

e.g.

kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3
kubeadmConfigPatches:
- |
  apiVersion: kubeadm.k8s.io/v1beta1
  kind: ClusterConfiguration
  metadata:
    name: config
  networking:
    serviceSubnet: 10.0.0.0/16
  imageRepository: registry.aliyuncs.com/google_containers
  nodeRegistration:
    kubeletExtraArgs:
      pod-infra-container-image: registry.aliyuncs.com/google_containers/pause:3.1
- |
  apiVersion: kubeadm.k8s.io/v1beta1
  kind: InitConfiguration
  metadata:
    name: config
  networking:
    serviceSubnet: 10.0.0.0/16
  imageRepository: registry.aliyuncs.com/google_containers
nodes:
- role: control-plane
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker
复制代码

我们使用以下的命令来搭建高可用的 Kubernetes 集群:

master $ kind create cluster --name moelove-ha --config kind-ha-config.yaml
Creating cluster "moelove-ha" ...✓ Ensuring node image (kindest/node:v1.13.4) ?✓ Preparing nodes ???????✓ Starting the external load balancer ⚖️✓ Creating kubeadm config ?✓ Starting control-plane ?️✓ Joining more control-plane nodes ?✓ Joining worker nodes ?
Cluster creation complete. You can now use the cluster with:export KUBECONFIG="$(kind get kubeconfig-path --name="moelove-ha")"
kubectl cluster-info
master $ export KUBECONFIG="$(kind get kubeconfig-path --name="moelove-ha")"
master $ kubectl cluster-info
Kubernetes master is running at https://localhost:44019
KubeDNS is running at https://localhost:44019/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
复制代码

可以做下简单的验证:

master $ kubectl get nodes
NAME                        STATUS   ROLES    AGE     VERSION
moelove-ha-control-plane    Ready    master   3m42s   v1.13.4
moelove-ha-control-plane2   Ready    master   3m24s   v1.13.4
moelove-ha-control-plane3   Ready    master   2m13s   v1.13.4
moelove-ha-worker           Ready    <none>   96s     v1.13.4
moelove-ha-worker2          Ready    <none>   98s     v1.13.4
moelove-ha-worker3          Ready    <none>   95s     v1.13.4
复制代码

可以看到已经成功创建了多 master 的 Kubernetes 集群。

总结

这是使用 Kind 搭建本地 Kubernetes 集群的第一篇,同时本篇的内容也是《Kubernetes 从上手到实践》第 4 节内容的补充,搭配食用效果更佳 :)


可以通过下面二维码订阅我的文章公众号【MoeLove】

使用 Kind 搭建你的本地 Kubernetes 集群相关推荐

  1. 巧用 K3s 和 Traefik 快速搭建本地 Kubernetes 集群

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 完整的 Kubernetes 集群往往非常复杂,需要较高的资源,往往我们在开发期间需要一个完整的 Kubernet ...

  2. 使用Minikube部署本地Kubernetes集群(二十九)

    前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题. 在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建.如果搭建过程中 ...

  3. 从0到1:搭建一个完整的kubernetes集群(kubeadm)

    目录 1.设备介绍:(VMware workstation16.0) 2.环境准备:(all) 1.配置域名映射: 2.放行kubernetes所用到的端口: 3.关闭selinux: 4.关闭swa ...

  4. 如何从 0 到 1,搭建一个完整的 Kubernetes 集群?

    图片来源:pexels.com 这两年,Kubernetes 击败了 Swarm 和 Mesos,几乎成为容器编排的事实标准,BAT.滴滴.京东.头条等大厂,都争相把容器和 K8S 项目作为技术重心, ...

  5. 11. 搭建一个完整的K8S集群

    11. 搭建一个完整的Kubernetes集群 1. kubectl的命令遵循分类的原则(重点) 语法1: kubectl 动作 类 具体的对象 例如: """ kube ...

  6. kubeadm1.22.x 部署kubernetes集群

    目前,国内kubernetes的源版本多为1.5.2,使用传统方式很难搭建最新版本的kubernetes集群.因此,本文使用kubeadm搭建最新版本kubernetes集群. 一.集群说明 机器角色 ...

  7. 使用 K3s 和 WireGuard 网络快速部署一个多云环境的 Kubernetes 集群

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 每日言论 SQLite 的应用太广泛,测试量也很惊人.每个版本发布之前,都要进行各种单元测试.参数测试.模糊测试, ...

  8. Kubernetes入门--搭建Kubernetes集群,并启动容器服务

    英文原作者:Ben Cane  翻译作者:Miazzy 翻译&转载:https://blog.codeship.com/getting-started-with-kubernetes/ Kub ...

  9. 从0到1搭建kubernetes集群

    环境准备 笔者是在阿里云租了三台ecs服务器,系统选用的ubuntu16.04(2核4G,建议CPU核数不少于2, 配置过低preflight checks阶段可能会报错). 使用几个虚拟机也可,有条 ...

  10. kubernetes集群搭建Zabbix监控平台

    kubernetes集群搭建Zabbix监控平台 一.zabbix介绍 1.zabbix简介 2.zabbix特点 3.zabbix的主要功能 4.zabbix架构图 二.检查本地k8s环境 1.检查 ...

最新文章

  1. 微信红包随机算法实现
  2. iOS之NSString类中compare方法的陷阱
  3. patch是什么意思啊_学 Vue 看这个就够了 - 什么是 Vue.js
  4. PHP电商的sku,tech| 关于电商系统中sku与spu的一个难题
  5. Hadoop HDFS分布式文件系统 常用命令汇总
  6. 系统出现“NTLDR is missing press any key to restart”问题解决方案
  7. Y1066 Ble Master Client 记录
  8. 设计根据标示符全局只运行一次的类
  9. qt 中文转十六进制_QT中16进制字符串转汉字
  10. linux 秒数转时间格式,通过delphi将秒数转换成日期格式
  11. YII2 rules 规则验证器
  12. [C#]System.Timers.Timer
  13. iphone屏幕镜像如何全屏_苹果手机投到电视上能全屏嘛
  14. 小白怎么入门网络安全?看这篇就够啦!
  15. 装机配置相关---激活win7旗舰版 office
  16. C++---常见秋招、春招问题汇总(持续更新)
  17. 欢迎高校选修云创大数据免费在线直播课!
  18. 从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数)
  19. UEFI和Legacy是什么意思?
  20. Mozilla Firefox os系统构架详解

热门文章

  1. 固定成本、可变成本、沉没成本、机会成本
  2. 如何通过AdsPower保障Facebook账号登录稳定
  3. 大数据信息资料采集:电商网站京东淘宝苏宁易购产品评论内容采集
  4. GPS 入门 7 —— GPS定位、LSB基站定位、wifi定位区别
  5. module() takes at most 2 arguments (3 given)
  6. C语言4位BCD码加法器,四位二进制8421BCD码加法器.doc
  7. c语言一个数平方表示,C语言 - 利用 汇编思想 写一个数的平方
  8. 天行健---宇宙的生与死
  9. 管家婆辉煌Ⅱ TOP 突破系统每年只能做11次12次月结存限制
  10. 洛谷p3398仓鼠找suger题解