使用 kind 部署单机版 kubernetes 集群

1.kind 的介绍和优势

kind(Kubernetes in Docker)是一个基于Docker构建的Kubernetes集群的工具。它经过CNCF认证,并且支持多节点集群,包括高可用集群。并且支持Linux、macOS以及Windows操作系统,操作简单,学习成本低,非常适合用来在本地搭建基于Kubernetes的开发/测试环境

2. 使用kind 部署本地k8s集群

2.1 本地安装kind

  • mac 环境安装kind,可以直接使用brew 安装
brew install kind
  • Linux 环境安装kind,
curl -Lo ./kind "https://kind.sigs.k8s.io/dl/v0.8.1/kind-$(uname)-amd64"
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
  • Windows 环境安装kind
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.8.1/kind-windows-amd64
Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe

# OR via Chocolatey (https://chocolatey.org/packages/kind)
choco install kind
  • 查看已安装的kind的版本
➜  ~ kind version
kind v0.8.1 go1.14.2 darwin/amd64

2.2 本地安装Kubectl

  • Mac 上安装kubectl

    运行安装命令:

    brew install kubectl 
    # 或者
    brew install kubernetes-cli
    # 测试以确保您安装的版本是最新的:
    kubectl version --client
    
  • 在Linux上使用curl安装Kubectl二进制文件
  1. 使用以下命令下载最新版本:

    curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
    

    要下载特定版本,请用特定版本替换$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)命令部分。

    例如,要在Linux上下载版本v1.18.0,请输入:

    curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
    
  2. 使kubectl二进制可执行文件。

    chmod +x ./kubectl
    
  3. 将二进制文件移到您的PATH中。

    sudo mv ./kubectl /usr/local/bin/kubectl
    
  4. 测试以确保您安装的版本是最新的:

    kubectl version --client
    
  • 在Windows上安装Kubectl
  1. 从此链接下载最新版本的v1.18.0 。

    或者,如果已curl安装,请使用以下命令:

    curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/windows/amd64/kubectl.exe
    

    要查找最新的稳定版本(例如,用于脚本编写),请查看https://storage.googleapis.com/kubernetes-release/release/stable.txt

  2. 将二进制文件添加到您的PATH中。

  3. 测试以确保的版本kubectl与下载的版本相同:

    kubectl version --client
    

注意: 适用于Windows的Docker桌面将其自己的版本添加kubectl到PATH。如果您之前已经安装了Docker Desktop,则可能需要将PATH条目放置在Docker Desktop安装程序添加的PATH之前,或者删除Docker Desktop的kubectl

3. 创建集群

Tips: 使用kind ,需要环境安装docker

现在,我们应该能够使用kind CLI来启动一个Kubernetes集群:

Usage:
  kind [command]Available Commands:
  build       Build one of [node-image]
  completion  Output shell completion code for the specified shell
  create      Creates one of [cluster]
  delete      Deletes one of [cluster]
  export      Exports one of [kubeconfig, logs]
  get         Gets one of [clusters, nodes, kubeconfig]
  help        Help about any command
  load        Loads images into nodes
  version     Prints the kind CLI version

3.1.创建k8s集群:

kind create cluster

如下:

➜  ~ kind create cluster
Creating cluster "kind" ...
⠈⠁ Ensuring node image (kindest/node:v1.18.2) 🖼
 ✓ Ensuring node image (kindest/node:v1.18.2) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Have a nice day! 👋

3.2.创建特定版本的k8s集群

将通过拉取最新的Kubernetes节点(v 1.18.2)来创建一个Kubernetes集群。刚刚我们已经创建了一个v 1.18.2的Kubernetes集群。

在创建集群的过程中如果我们没有--name参数,那么集群名称将会默认设置为kind。

kind build node-image
kind create cluster --image kindest/node:latest

如下:

➜  ~ kind create cluster --image kindest/node:v1.15.6 --name kind-1.15.6
Creating cluster "kind-1.15.6" ...
 ✓ Ensuring node image (kindest/node:v1.15.6) 🖼
 ✓ Preparing nodes 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
Could not read storage manifest, falling back on old k8s.io/host-path default ...
 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind-1.15.6"
You can now use your cluster with:

kubectl cluster-info --context kind-kind-1.15.6

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂

4. 查看部署好的集群

kind get clusters

如下:

➜  ~ kind get clusters
kind
kind-1.15.6

5.为kubectl设置上下文

创建集群之后,kubectl会指出最近创建的K8S集群。

让我们来检查一下所有可用的上下文。

➜  ~ kubectl config get-contexts
CURRENT   NAME                 CLUSTER                      AUTHINFO             NAMESPACE
          docker-for-desktop   docker-for-desktop-cluster   docker-for-desktop   
          kind-kind            kind-kind                    kind-kind            
*         kind-kind-1.15.6     kind-kind-1.15.6             kind-kind-1.15.6 

从输出中,我们可以得到结论,kubectl上下文目前已经被设置为最新的集群,即kind-1.15.6。(上下文名称是以kind为前缀的)

要将kubectl上下文设置为版本是1.18.2的kind集群,我们需要进行如下操作:

➜  ~ kubectl config set-context kind-kind 
Context "kind-kind" modified.

要验证kubectl是否指向正确的集群,我们需要检查节点:

➜  ~  kubectl get nodes
NAME                 STATUS   ROLES    AGE   VERSION
kind-control-plane   Ready    master   74m   v1.18.2

6. 删除集群

kind delete cluster

如下:

> kind delete cluster --name kind
Deleting cluster "kind" ...

如果你想一次性删除所有集群,请执行:

kind delete clusters –all

如下:

> kind delete clusters --all
Deleted clusters: ["kind-1.15.6"]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352