使用 Kind 创建1.20.7 版本的 K8s 一主二从集群
  Y7SpQRD6Tt1P 2023年11月02日 39 0

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

1.安装 kind

# 建议下载最新版本的 kind
go get sigs.k8s.io/kind@v0.11.1
cp $(go env GOPATH)/bin/kind /usr/local/bin

2.使用 kind 搭建k8s集群

2.1 创建3结点集群的配置文件

vim ~/k8s-3nodes.yaml, 添加下述内容:

# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

2.2 创建集群:

使用kind创建集群之前首先要确保 ~/.kube 目录存在,如果不存在,要先使用 mkdir ~/.kube 创建 .kube 目录。(防止后续非 root 用户使用 kubectl 查看 Kind 创建的集群需要加sudo的问题)

mkdir ~/.kube

创建指定版本,指定节点的集群:

kind create cluster --config ~/k8s-3nodes.yaml --image kindest/node:v1.20.7@sha256:cbeaf907fc78ac97ce7b625e4bf0de16e3ea725daf6b04f930bd14c67c671ff9
  • 如果不指定--config,默认创建单master集群;
  • 使用--image参数可以指定创建的k8s版本,kind v0.11.1版本可以使用的node镜像可以在这里面找到:​​https://github.com/kubernetes-sigs/kind/releases/tag/v0.11.1​
  • 不手动使用 --name 指定集群名称的时候,集群默认名为 kind
    注:镜像后面的@sha256的这一串token最好加上。

这样集群就创建好了,如下图所示:
使用 Kind 创建1.20.7 版本的 K8s 一主二从集群_docker

2.3 注意事项

1.如果结点一直处于NotReady,有可能是kind的版本问题。
2.由于前面只创建了一个集群,如果创建了很多个集群的话(使用--name可以指定集群名称,所以可以创建很多不同名称的集群),那么使用Kubectl命令的时候要使用 --context 指定集群名称

查看集群信息
❯ kubectl cluster-info --context kind-kind
Kubernetes master is running at https://127.0.0.1:41801
KubeDNS is running at https://127.0.0.1:41801/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

可以看到我们 k8s master 地址和 dns 的地址,注意一般情况下我们只创建一个集群不需要指定 --context cluster name 但是创建了多个集群时这个基本就是必须的一个命令了。如果不加这个参数可能会报下面的错误

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

这是因为 kubectl默认连接的 apiserver 地址是 localhost:8080但是我们的 apiserver 地址不是这个所以报错。

为什么我们使用 --context cluster-name 就可以了呢?

这是因为 kind 在创建集群的时候会修改 $HOME/.kube/config 的配置,将集群的 apiserver 地址,证书等相关信息都自动写入进去了

每次命令都要加上这个参数好麻烦怎么办?

我们可以使用 kubectl config use-context context-name 来进行设置,设置好了之后我们后续就不用每次都加上 –-context 的参数了,同时还可以通过 kubectl config current-context 查询我们当前默认操作的集群是哪一个

3. 登录 k8s 结点

3.1 登录结点

由于 Node 是 docker 容器,则可以使用 docker ps 命令查看当前运行的容器:
使用 Kind 创建1.20.7 版本的 K8s 一主二从集群_vim_02
可以看到,3个结点对应3个 docker 容器,那么使用如下命令就可以登录结点了,以master结点为例:

docker exec -it kind-control-plane bash

使用 Kind 创建1.20.7 版本的 K8s 一主二从集群_vim_03

3.2 查看结点中已经下载的镜像

可以使用 crictl 命令操作 kind 结点中的镜像:

# 查看镜像
crictl images

3.3 结点中安装 vim 编辑器

但是进入结点后,会发现没有 vim 命令,所以无法编辑文件。使用

kubectl describe node kind-control-plane

或者直接在​​此链接​​中可以发现,v0.11.1版本的kind中node的底层操作系统镜像是 Ubuntu 21.04,因此可以使用 apt 来安装vim命令。

# 这条 update 命令是必须的,否则会提示 Unable to locate package vim
apt-get update
apt-get install vim

这样就安装好了 vim 。

参考文章

​https://kind.sigs.k8s.io/docs/user/quick-start/​

​https://github.com/kubernetes-sigs/kind/releases/tag/v0.11.1​

​Kind: 如何快速搭建本地 K8s 开发环境? - Mohuishou (lailin.xyz)​

使用 Kind 搭建你的本地 Kubernetes 集群

Docker---(6)问题:bash: vi: command not found_IT云清

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xqA0sOKuvLcb   2023年11月22日   38   0   0 redisDockerredisdocker
  bifOjSxj34Bv   2023年12月07日   38   0   0 nginxDockerdockernginx
  IEgV2R47Wr6T   2023年11月12日   70   0   0 数据mysqldocker
Y7SpQRD6Tt1P