在现有 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 环境运行正常,并部署了示例应用。
相关推荐
mosaicwang17 分钟前
创建ipv6 only和ipv6+ip4的k8s集群的注意事项
云原生·容器·kubernetes
孔令飞43 分钟前
经典面试题:一文了解常见的缓存问题
缓存·ai·云原生·面试·golang·kubernetes
KubeSphere 云原生3 小时前
基于 KubeKey 3.1.9,快速部署 K8s 1.33.0 高可用集群
云原生·容器·kubernetes
星之尘102115 小时前
“粽”览全局:分布式系统架构与实践深度解析(端午特别版)
分布式·spring cloud·微服务·系统架构·kubernetes·serverless·可用性测试
三金C_C15 小时前
docker 部署 gin
docker·容器·gin
家庭云计算专家16 小时前
Portainer安装指南:多节点监控的docker管理面板-家庭云计算专家
docker
长勺16 小时前
docker常见考点
docker·容器
迢迢星万里灬17 小时前
Java求职者面试指南:DevOps技术栈深度解析
java·ci/cd·docker·kubernetes·jenkins·devops
喝养乐多长不高17 小时前
深入探讨redis:万字讲解集群
java·数据库·redis·docker·集群·集群扩容·数据分片算法
玩电脑的辣条哥19 小时前
如何用docker部署ELK?
elk·docker·容器