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二进制文件
-
使用以下命令下载最新版本:
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
-
使kubectl二进制可执行文件。
chmod +x ./kubectl
-
将二进制文件移到您的PATH中。
sudo mv ./kubectl /usr/local/bin/kubectl
-
测试以确保您安装的版本是最新的:
kubectl version --client
- 在Windows上安装Kubectl
-
从此链接下载最新版本的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。
-
将二进制文件添加到您的PATH中。
-
测试以确保的版本
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"]
网友评论