当前位置: 首页 > 工具软件 > KinD > 使用案例 >

使用kind部署k8s

苏高远
2023-12-01

kind即 Kubernetes In Docker,将 k8s 所需要的所有组件,全部部署在了一个docker容器中,是一套开箱即用的 k8s 环境搭建方案,可以让我们快速的搭建k8s测试平台。它将每个容器模拟成一个k8s节点,可以轻松地在单节点上部署"多节点"集群,甚至"高可用集群",而且还可以部署和管理多个版本集群。在搭建个人学习平台时,如果要搭建一个多控多计算的集群,个人电脑很难有这么高的资源配置,使用kind来部署集群就很有必要了。

kind – Quick Start

安装工具 | Kubernetes

下载kind

可以按需下载Releases · kubernetes-sigs/kind · GitHub

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

创建集群

kind create cluster # 如果不指定名字则默认为kind
kind create cluster --name kind-2

查看集群信息

context为kind-创建集群时指定的名字,前面指定的名字为kind-2,则context为kind-kind-2

kubectl cluster-info --context kind-kind
kubectl cluster-info --context kind-kind-2

可以使用别名,不用每次加--context 

alias kubectl='kubectl --context kind-kind-2'

添加镜像

不能直接使用主机上的镜像,需要导入到kind的节点(容器中)

kind load docker-image my-custom-image-0 my-custom-image-1
比如:(此处的name为创建集群时的name...)
kind load docker-image nginx:1.13 --name kind-2

查看镜像

docker exec -it my-node-name crictl images

多节点集群

模拟多节点集群,其实只是在一个主机上的多个容器

config.yaml

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

部署集群

kind create cluster --config config.yaml

高可用集群

模拟多个控制节点

config.yaml

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker

部署集群

kind create cluster --config config.yaml

测试

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: docker.io/library/nginx:1.13   
//镜像不能使用latest tag,或者手动添加拉取镜像规则
The Kubernetes default pull policy is IfNotPresent unless the image tag is :latest or omitted (and implicitly :latest) in which case the default policy is Always. IfNotPresent causes the Kubelet to skip pulling an image if it already exists. If you want those images loaded into node to work as expected, please:

don't use a :latest tag
and / or:

specify imagePullPolicy: IfNotPresent or imagePullPolicy: Never on your container(s).

启动deployment

kubectl apply -f deployment.yaml

 类似资料: