在现有 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 环境运行正常,并部署了示例应用。
相关推荐
李菠菜1 小时前
Kubernetes上通过Helm部署高可用Redis集群
docker·容器·kubernetes
李菠菜1 小时前
修改KubeSphere外网访问端口
docker·容器·kubernetes
福大大架构师每日一题1 小时前
docker v28.1.1 正式发布!修复关键Bug,网络与安全性再升级
网络·docker·bug
一个小坑货2 小时前
Docker 部署 PostgreSQL 数据库
数据库·docker·postgresql
残轩2 小时前
Win10 家庭版 Docker 环境搭建详解(基于 WSL2)
前端·后端·docker
David爱编程3 小时前
90%工程师都踩过的坑:K8s三种探针最佳组合方案全解析
docker·云原生·kubernetes
davysiao3 小时前
基于 CentOS 的 Docker Swarm 集群管理实战指南
linux·docker·centos
Archie_IT4 小时前
Puter部署指南:基于Docker的多功能个人云平台掌控自己的数据
运维·docker·容器
思逻辑维4 小时前
数据库+Docker+SSH三合一!深度评测HexHub的全栈开发体验
数据库·docker·ssh·软件工程·开源软件·软件需求
quququ_21384 小时前
Java面试:从Spring Boot到微服务的全面考核
spring boot·微服务·kubernetes·mybatis·hibernate·java面试