什么是 Kind
Kind(Kubernetes in Docker) 是一个 Kubernetes 孵化项目,Kind 是一套开箱即用的 Kubernetes 环境搭建方案。顾名思义,就是将 Kubernetes 所需要的所有组件,全部部署在一个 Docker 容器中,可以很方便的搭建 Kubernetes 集群。

Kind 已经广泛的应用于 Kubernetes 上游及相关项目的 CI 环境中,官方文档中也把 Kind 作为一种本地集群搭建的工具推荐给大家。

项目地址:https://github.com/kubernetes-sigs/kind

Kind 可以做什么?

  • 快速创建一个或多个 Kubernetes 集群
  • 支持部署高可用的 Kubernetes 集群
  • 支持从源码构建并部署一个 Kubernetes 集群
  • 可以快速低成本体验一个最新的 Kubernetes 集群,并支持 Kubernetes 的绝大部分功能
  • 支持本地离线运行一个多节点集群

Kind 有哪些优势?

  • 最小的安装依赖,仅需要安装 Docker 即可
  • 使用方法简单,只需 Kind Cli 工具即可快速创建集群
  • 使用容器来模似 Kubernetes 节点
  • 内部使用 Kubeadm 的官方主流部署工具
  • 通过了 CNCF 官方的 K8S Conformance 测试

Kind 是如何工作的?

Kind 使用容器来模拟每一个 Kubernetes 节点,并在容器里面运行 Systemd 。 容器里的 Systemd 托管了 Kubelet 和 Containerd ,然后容器内部的 Kubelet 把其它 Kubernetes 组件: Kube-Apiserver 、 Etcd 、 CNI 等等组件运行起来。
Kind 内部使用了 Kubeadm 这个工具来做集群的部署,包括高可用集群也是借助 Kubeadm 提供的特性来完成的。在高用集群下还会额外部署了一个 Nginx 来提供负载均衡 VIP。

如何安装?前提是安装好docker

第一步:

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

使用 Kind

简单说下几个比较常用选项的含义:

  • build:用来从 Kubernetes 源代码构建一个新的镜像。
  • create:创建一个 Kubernetes 集群。
  • delete:删除一个 Kubernetes 集群。
  • get:可用来查看当前集群、节点信息以及 Kubectl 配置文件的地址。
  • load:从宿主机向 Kubernetes 节点内导入镜像。

使用 Kind 创建 Kubernetes 集群

搭建一个单节点集群

搭建单节点集群是 Kind 最基础的功能,当然使用起来也很简单,仅需一条指令即可完成。

kind create cluster --name my-cluster

然后出现....

最后是:

$ 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/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. $ kubectl get nodes
NAME STATUS ROLES AGE VERSION
my-cluster-control-plane Ready master 2m v1.15.3 $ kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-6g66f 1/1 Running 0 21m
coredns-86c58d9df4-pqcc4 1/1 Running 0 21m
etcd-my-cluster-control-plane 1/1 Running 0 20m
kube-apiserver-my-cluster-control-plane 1/1 Running 0 20m
kube-controller-manager-my-cluster-control-plane 1/1 Running 0 20m
kube-proxy-cjgnt 1/1 Running 0 21m
kube-scheduler-my-cluster-control-plane 1/1 Running 0 21m
weave-net-ls2v8 2/2 Running 1 21m

从上面的输出结果,可以看到单节点的 Kubernetes 已经搭建成功。单节点集群默认方式启动的节点类型是 control-plane,该节点包含了所有的组件。这些组件分别是:2*Coredns、Etcd、Api-Server、Controller-Manager、Kube-Proxy、Sheduler 和网络插件 Weave,目前默认使用的网络插件也是 Weave。

创建高可用 Kubernetes 集群

Kind 也支持搭建高可用的 Kubernetes 集群,创建方式和多节点集群类似,也是通过配置文件来实现。

  1. 创建高可用 Kubernetes 集群配置文件

$ vim my-cluster-ha.yaml    

# 一共六个节点,三个 control-plane 节点,三个 workers 节点
kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3
kubeadmConfigPatches:
- |
apiVersion: kubeadm.k8s.io/v1beta2
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/v1beta2
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
可能会报错,解决办法。

The connection to the server localhost:8080 was refused - did you specify the right host or port?解决

解决方式

步骤一:设置环境变量

具体根据情况,此处记录linux设置该环境变量
方式一:编辑文件设置
vim /etc/profile
在底部增加新的环境变量 export KUBECONFIG=/etc/kubernetes/admin.conf
方式二:直接追加文件内容
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile 步骤二:使生效 source /etc/profile
apiVersion: kind.sigs.k8s.io/v1alpha3    这个也会报错,解决办法。
修改一下:apiVersion: kind.x-k8s.io/v1alpha4
最后执行:

kind create cluster --config my-cluster-ha.yaml --name my-cluster-ha

同样,我们根据上面命令执行完后,输出的提示信息进行操作来验证一下集群是否部署成功。
kubectl get nodes
ectl get nodes
NAME STATUS ROLES AGE VERSION
my-cluster-ha-control-plane Ready master 3m42s v1.15.3
my-cluster-ha-control-plane2 Ready master 3m24s v1.15.3
my-cluster-ha-control-plane3 Ready master 2m13s v1.15.3
my-cluster-ha-worker Ready <none> 96s v1.15.3
my-cluster-ha-worker2 Ready <none> 98s v1.15.3
my-cluster-ha-worker3 Ready <none> 95s v1.15.3

使用Kind快速构建k8s的更多相关文章

  1. 菜鸟系列k8s——快速部署k8s集群

    快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...

  2. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  3. 9. 利用Docker快速构建MGR | 深入浅出MGR

    目录 1.安装Docker 2.拉取GreatSQL镜像,并创建容器 2.1 拉取镜像 2.2 创建新容器 2.3 容器管理 3.构建MGR集群 3.1 创建专用子网 3.2 创建3个新容器 3.3 ...

  4. 玩转Windows服务系列——使用Boost.Application快速构建Windows服务

    玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务.Debug.Release版本的注册和卸载,及其原理和服务运行.停止流程浅析分别介绍了Wi ...

  5. Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式

    昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...

  6. 使用Asp.net WebAPI 快速构建后台数据接口

    现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...

  7. 利用Nodejs快速构建应用原型

    利用Nodejs快速构建应用原型 开发一个应用往往需要快速的构建原型,然后在此基础上设计和改进,前端可能立马能看到效果,但是后端业务逻辑不会那么快,这个时候其实我们需要额只是一些模拟数据,所以不需要真 ...

  8. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  9. Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

随机推荐

  1. 关于Android安装apk出现解析包异常问题情况总结

    原文地址:关于Android安装apk出现解析包异常问题情况总结 | Stars-One的杂货小窝 说之前,可以推荐下各位使用这个开源库AndroidUtilCode,下面提及到的工具类,都是在此库中 ...

  2. Android第五六周作业

    1.返回键实现对话框弹出是否退出应用程序 package com.example.zuoye1; import androidx.appcompat.app.AlertDialog; import a ...

  3. Flex 的 多种对齐属性

    1. html 结构 <div id="container"> <div class="item item-1"> <h3> ...

  4. python基础练习题(斐波那契数列)

    day4 --------------------------------------------------------------- 实例006:斐波那契数列 题目 斐波那契数列. 题目没说清楚, ...

  5. Bugku CTF练习题---加密---聪明的小羊

    Bugku CTF练习题---加密---聪明的小羊 flag:KEY{sad23jjdsa2} 解题步骤: 1.观察题目,发现其中的信息 2.经过题目判断,得知该题属于栅栏密码的一种,并且介绍中表明了 ...

  6. python3 Softmax函数

    Softmax函数公式 Softmax的作用简单的说就计算一组数值中每个值的占比 import torch import torch.nn.functional as F # 原始数据tensor y ...

  7. 分布式存储之GlusterFS

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 1.glusterfs概述 GlusterFS系统是一个可扩展的网络文件系统,相比其他分布式文件系统,GlusterFS具有 ...

  8. 实战|Linux大文件切割

    一个执着于技术的公众号 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件 ...

  9. AspNetCore开源中间件-VueRouterHistory

    前言 用过VueRouter路由组件的应该都知道,VueRouter有hash和history两种模式.hash模式会在url中插入#,history模式下url则看上去更加简洁美观.如果想要支持hi ...

  10. CMU 15-445 数据库课程第四课文字版 - 存储2

    熟肉视频地址: CMU数据库管理系统课程[熟肉]4.数据库存储结构2(上) CMU数据库管理系统课程[熟肉]4.数据库存储结构2(下) 1. 面向日志的存储 上节课我们讲完了面向元组的存储,这节课从面 ...