在现有 Docker Desktop 环境下安装与配置独立 Kubernetes环境

在现有 Docker Desktop 环境下安装与配置独立 Kubernetes 集群环境

目标

  1. 在已安装Docker Desktop自带Kubernetes的情况下,搭建一个独立 Kubernetes 集群环境。
  2. 配置独立的 kubectl 工具,使其默认管理独立的 Kubernetes 集群。
  3. 保留 Docker Desktop 的 Kubernetes 环境,确保与独立环境互不干扰。
  4. 实现多个 Kubernetes 环境之间的灵活切换。

一、前提条件

在开始之前,请确保满足以下条件:

  1. 已安装 Docker Desktop,并启用了 Docker Desktop 的 Kubernetes 功能(如果需要)。

  2. 操作系统为 macOS,并已安装 Homebrew(包管理工具)。

  3. 系统工具检查

    • 确保 curlbrew 可用:

      bash 复制代码
      curl --version
      brew --version
  4. 注意 Docker Desktop 的 kubectl 工具

    默认情况下,Docker Desktop 自带的 kubectl 工具位于 /usr/local/bin,并通过软链接指向 Docker Desktop 安装目录。如果希望安装独立的 kubectl 工具并避免冲突,可以通过重命名 Docker 的 kubectl 来解决。


二、重命名 Docker 的 kubectl

为了让独立安装的 kubectl 成为默认管理工具,同时保留 Docker Desktop 的 Kubernetes 功能,我们需要将 Docker 自带的 kubectl 软链接重命名为 kubectl-docker

步骤

  1. 重命名 Docker 的 kubectl

    bash 复制代码
    sudo mv /usr/local/bin/kubectl /usr/local/bin/kubectl-docker

    此操作不会删除 Docker Desktop 的 kubectl,而是将其重命名,以便后续使用。

  2. 验证重命名是否成功:

    bash 复制代码
    ls -l /usr/local/bin/kubectl-docker

    输出应类似如下:

    plaintext 复制代码
    lrwxr-xr-x  1 root  wheel  55B 12  9  2021 /usr/local/bin/kubectl-docker -> /Applications/Docker.app/Contents/Resources/bin/kubectl

至此,我们已经完成了重命名 Docker 的 kubectl,避免其与独立安装的 kubectl 工具产生冲突。


三、安装独立的 kubectl 工具

kubectl 是 Kubernetes 的核心命令行工具,用于管理 Kubernetes 集群。

安装命令
在 macOS 系统上安装和设置 kubectl


四、安装 Kubernetes 集群

根据需求选择以下几种常用的 Kubernetes 本地集群工具之一:

方案 1:使用 Minikube

Minikube 是一个轻量级工具,用于在本地快速启动单节点 Kubernetes 集群,适合开发和测试用途。
Minikube使用

安装步骤
  1. 安装 Minikube:

    bash 复制代码
    brew install minikube
  2. 启动 Minikube 集群:

    bash 复制代码
    minikube start

    默认情况下,Minikube 使用 Docker 作为容器运行时。如果需要其他运行时(如 containerdCRI-O),可以通过以下方式启动:

    bash 复制代码
    minikube start --container-runtime=containerd
  3. 验证 Minikube 集群是否成功启动:

    bash 复制代码
    kubectl config get-contexts

    输出应包含 minikube 的上下文:

    plaintext 复制代码
    CURRENT   NAME       CLUSTER    AUTHINFO    NAMESPACE
              minikube   minikube   minikube
  4. 设置 kubectl 使用 Minikube 的上下文:

    bash 复制代码
    kubectl config use-context minikube
  5. 验证 Kubernetes 节点状态:

    bash 复制代码
    kubectl get nodes

    应看到 Minikube 的节点状态为 Ready


方案 2:使用 Kind

Kind(Kubernetes IN Docker)是一种使用 Docker 容器构建 Kubernetes 集群的工具,非常适合多节点集群的模拟。
kind使用

安装步骤
  1. 安装 Kind:

    bash 复制代码
    brew install kind
  2. 创建 Kind 集群:

    bash 复制代码
    kind create cluster

    如果需要多节点集群,可以使用以下配置文件创建集群:

    bash 复制代码
    cat <<EOF > kind-config.yaml
    kind: Cluster
    apiVersion: kind.x-k8s.io/v1alpha4
    nodes:
      - role: control-plane
      - role: worker
      - role: worker
    EOF
    kind create cluster --config kind-config.yaml
  3. 验证 Kind 集群是否成功启动:

    bash 复制代码
    kubectl cluster-info --context kind-kind

    输出应显示集群的控制平面和服务地址。

  4. 切换到 Kind 集群的上下文:

    bash 复制代码
    kubectl config use-context kind-kind
  5. 验证节点状态:

    bash 复制代码
    kubectl get nodes

方案 3:使用 kubeadm 安装(适合更接近生产的环境)

kubeadm 是 Kubernetes 官方提供的工具,用于快速部署一个多节点的 Kubernetes 集群。

你可以选择在虚拟机或者裸金属机器上安装 Kubernetes,配置 kubeadm 初始化集群。

<--------- 待更新 --------->


五、在多个 Kubernetes 环境之间切换

Docker Desktop 和独立安装的 Kubernetes 可以共存,你可以灵活切换它们的上下文。

  1. 切换到 Docker Desktop 的上下文:

    bash 复制代码
    kubectl-docker config use-context docker-desktop
  2. 切换到 Minikube 的上下文:

    bash 复制代码
    kubectl config use-context minikube
  3. 切换到 Kind 的上下文:

    bash 复制代码
    kubectl config use-context kind-kind
  4. 查看当前使用的上下文:

    bash 复制代码
    kubectl config current-context

六、验证 Kubernetes 环境

为了确保 Kubernetes 工作正常,可以部署一个简单的示例应用。

  1. 部署示例 Deployment:

    bash 复制代码
    kubectl create deployment hello-world --image=nginx
  2. 查看 Pod 状态:

    bash 复制代码
    kubectl get pods
  3. 暴露服务端口:

    bash 复制代码
    kubectl expose deployment hello-world --type=NodePort --port=80
  4. 获取服务的 NodePort:

    bash 复制代码
    kubectl get svc
  5. 如果使用 Minikube,可以通过以下命令获取 Minikube 的 IP 地址:

    bash 复制代码
    minikube ip

    然后访问 http://<minikube-ip>:<NodePort>,应看到 NGINX 默认页面。


七、总结

本文内容:

  1. 安装独立的 Kubernetes 集群(如 Minikube 或 Kind)。
  2. 配置独立的 kubectl 工具,并避免与 Docker Desktop 冲突。
  3. 实现多个 Kubernetes 环境(如 Minikube、Kind 和 Docker Desktop)之间的自由切换。
  4. 验证 Kubernetes 环境运行正常,并部署了示例应用。
相关推荐
九皇叔叔10 小时前
Kubernetes 资源管理方式详解:命令式与声明式管理
docker·容器·k8s
程序猿小郑16 小时前
Docker Compose 构建完整服务实战指南:从入门到最佳实践
docker·容器
行百里er20 小时前
5 分钟跑起 Redis(Docker 版)
redis·后端·docker
Mr.朱鹏20 小时前
Docker三剑客实战指南:Docker、Dockerfile 和 Docker Compose
python·docker·devops·dockerfile
鬼先生_sir21 小时前
Docker 完整教程
docker
java_logo21 小时前
Docker 一键部署 Jellyfin:快速搭建私有化媒体服务器
docker·私有化部署·jellyfin·硬件加速·媒体服务器·轩辕镜像·影音库
jianpeng的工程笔记1 天前
WeKnora 搭建研发 EDA 知识库:Docker 部署、RAG 与 Wiki 实践
docker·知识库·eda·rag
ysu_03141 天前
【2026】K8s GPU调度空占怎么解?Kueue与Volcano Gang配置
云原生·kubernetes·gpu算力·volcano·ai基础设施·kueue·gang scheduling
ZeroNews内网穿透1 天前
内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)
docker·https·内网穿透·nas·反向代理·halo·zeronews
哈__1 天前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes