使用 Kind搭建本地Kubernetes 集群

    • 安装 Kind
    • 部署一个 Web 应用
      • 构建 Docker 镜像
      • 创建 Kubernetes Deployment
      • 创建 Kubernetes Service
    • 连接远端的kubectl

安装 Kind

首先,下载并安装 Kind 工具:

wget https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-source

然后,通过以下命令创建一个 Kubernetes 集群。请注意,这个过程可能会花费一些时间。

kind create cluster

在这里插入图片描述

部署一个 Web 应用

构建 Docker 镜像

使用以下 Dockerfile 构建一个 Spring Boot Web 应用的 Docker 镜像,应用的功能就是返回自己的IP地址。

FROM openjdk:11-jre-slim
WORKDIR /
COPY ../build/libs/k8s-web-v1.jar /app/app.jar
EXPOSE 8080
CMD ["java", "-jar", "/app/app.jar"]
    @GetMapping("/k8s/web/host")
    public SKResponse webPort() throws UnknownHostException {
        InetAddress localhost = InetAddress.getLocalHost();
        String ipAddress = localhost.getHostAddress();
        return SKNoDataResponse.getResponse(CommonResponseEnum.SUCCESS.getCode(), "Pod的IP为:".concat(ipAddress));
    }

执行以下命令构建镜像,并通过 Kind 让集群节点能够访问该镜像。

docker build -t k8sweb .
kind load docker-image k8sweb

创建 Kubernetes Deployment

编写以下 YAML 文件描述 Deployment,其中包括了创建 3 个副本的配置:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-web-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: k8s-web
  template:
    metadata:
      labels:
        app: k8s-web
    spec:
      containers:
        - name: k8sweb
          image: k8sweb:latest
          imagePullPolicy: Never
          ports:
            - containerPort: 8080

执行以下命令部署应用:

kubectl apply -f deployment.yaml

创建 Kubernetes Service

创建以下 YAML 文件来定义 Service,使得应用可以通过节点 IP 和指定的 NodePort 进行访问:

# service.yaml

apiVersion: v1
kind: Service
metadata:
  name: k8s-web-service
spec:
  selector:
    app: k8s-web
  ports:
    - protocol: TCP
      port: 8080
      nodePort: 30001
  type: NodePort

执行以下命令部署 Service:

kubectl apply -f service.yaml

最后,通过以下命令获取节点信息并访问 Web 应用:

kubectl get nodes -o wide
curl http://<Node-IP>:30001/k8s/web/host

连接远端的kubectl

从远端下载kubectl配置文件保存到本机目录,远端文件路径/home/名字/.kube/config
导入IDEA
在这里插入图片描述
添加服务,在添加新的上下文弹出页面中选择kind就能使用了。kubectl.exe的版本最好和远端的一样

kubectl version
curl.exe -LO "https://dl.k8s.io/release/v1.29.1/bin/windows/amd64/kubectl.exe"
# https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#install-kubectl-binary-with-curl-on-windows

在这里插入图片描述

https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-source
https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#install-kubectl-binary-with-curl-on-windows

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐