Kubernetes 本地安装使用与连接远程集群

Kubernetes

定义

Kubernetes(简称 K8s)是一个开源的容器编排平台,主要用于自动化部署、扩展和管理容器化应用程序。它能够有效地管理成千上万个容器,提供应用程序的高可用性、可扩展性和自动化管理。

主要功能和用途

  1. 容器编排:
    Kubernetes 可以管理大量的容器,自动化容器的部署、调度、扩展和维护。
  2. 自动化部署和回滚:
    Kubernetes 支持自动化部署应用程序更新,并能够快速回滚到以前的版本。如果部署新版本的应用程序失败,Kubernetes 会自动将其回滚到之前的稳定状态,从而减少停机时间和人为干预。
  3. 服务发现和负载均衡:
    Kubernetes 提供了服务发现和负载均衡功能。当一个 Pod(最小部署单元)被创建或销毁时,Kubernetes 自动更新服务的 DNS 条目,确保其他应用程序能够通过服务名称访问。它还可以在 Pods 之间进行流量负载均衡,确保应用程序的高可用性。
  4. 自我修复(自动恢复):
    Kubernetes 具有自我修复能力。当一个容器或 Pod 出现故障时,Kubernetes 会自动重新调度并启动新的容器来替代故障的容器,确保应用程序的持续可用性。
  5. 自动扩展:
    Kubernetes 可以根据负载动态地扩展或缩减应用程序实例。例如,根据 CPU 或内存的使用情况,自动增加或减少 Pods 的数量,从而优化资源的使用并降低成本。
  6. 存储编排:
    Kubernetes 可以自动挂载存储系统(如本地存储、网络存储或云存储)到容器中,管理存储资源,确保数据的持久化和高可用性。
  7. 配置管理和密钥管理:
    Kubernetes 提供了 ConfigMap 和 Secret 来管理配置信息和敏感数据(如密码、API 密钥等),这些数据可以在应用程序运行时动态加载,避免将敏感信息硬编码到应用程序中。
  8. 多租户环境管理:
    Kubernetes 支持命名空间(Namespace),使得不同团队或应用可以在同一个 Kubernetes 集群中安全、独立地运行。这使得 Kubernetes 非常适合用于多租户环境。
  9. 支持多云和混合云环境:
    Kubernetes 是一个云无关的平台,可以在多种环境下运行,包括公有云、私有云和本地数据中心。这种灵活性使得企业可以根据需求选择最合适的基础设施。

核心组件

  1. API 服务器(kube-apiserver):
    处理 RESTful API 请求,是集群的控制面。所有操作都通过 API 服务器进行通信。
  2. etcd:
    一个高可用的键值存储系统,用于保存所有集群数据的备份,是 Kubernetes 的主要数据库。
  3. 控制器管理器(kube-controller-manager):
    负责集群中的各类控制循环(Controller),如节点控制器、复制控制器等,保证集群的期望状态和实际状态一致。
  4. 调度器(kube-scheduler):
    负责根据资源需求和策略将未分配的 Pod 调度到合适的节点上。
  5. 节点组件:
    kubelet:运行在每个节点上的代理,负责管理容器。
    kube-proxy:管理网络规则,实现服务的通信和负载均衡。
    容器运行时:运行容器的环境,例如 Docker、containerd 等。

典型应用场景

  1. 微服务架构:
    Kubernetes 是微服务架构的理想选择,因为它能够自动化管理和扩展分布式应用程序,确保服务之间的稳定通信。
  2. CI/CD 管道:
    通过与 CI/CD 工具集成(如 Jenkins、GitLab CI),Kubernetes 可以实现自动化的应用程序测试、构建和部署。
  3. 大数据处理和机器学习:
    Kubernetes 可以用于大数据处理和机器学习工作负载,提供弹性扩展和资源隔离。
  4. 开发和测试环境:
    Kubernetes 能够快速创建和销毁隔离的环境,这使得它非常适合用于开发和测试场景,提供一致的开发环境。
  5. 跨云和混合云部署:
    Kubernetes 支持跨多个云平台或混合云环境进行部署,提供统一的管理界面和 API。

安装独立的 kubectl

1. 下载文件

(1)访问 Kubernetes发布页面
在这里插入图片描述

(2)页面下滑在红框部分选择对应的系统,我的是Windows系统amd64,页面滑到最底下会看到下图所示版本,点击红色框的kubectl.exe:

在这里插入图片描述

Windows系统下载时需要注意计算机架构版本,即amd64还是arm64。
如何确认你的计算机架构:
方法一:检查系统信息:
在 Windows 任务栏的搜索框中输入 系统信息,然后选择打开 “系统信息”。
在 “系统信息” 窗口中,查找“系统类型”:
如果显示为 x64-based PC,则你的系统使用的是 amd64 架构。
如果显示为 ARM64-based PC,则你的系统使用的是 arm64 架构。
方法二:使用命令提示符:
打开命令提示符(cmd),输入以下命令:

echo %PROCESSOR_ARCHITECTURE%

输出结果:
如果输出 AMD64,则你应该下载 amd64 版本。
如果输出 ARM64,则你应该下载 arm64 版本。

(3)浏览器下载完成后可能出现警告,按照提示将文件保留下来就可以了

2. 添加环境变量

将kubectl.exe保存在本地文件夹,将文件夹路径添加进环境变量中。
1. 确定 kubectl.exe 的安装路径
假设你已将 kubectl.exe 下载并放置在 D:\K8s 文件夹中。
2. 添加路径到系统环境变量
在 Windows 10 或 11 中添加路径:
打开系统属性:
在任务栏的搜索框中输入 “环境变量”,然后选择“编辑系统环境变量”。
编辑环境变量:
在“系统属性”窗口中,点击“环境变量”按钮。
在“系统变量”部分,找到并选择“Path”,然后点击“编辑”。
添加新路径:
在编辑环境变量窗口中,点击“新建”,然后输入 kubectl.exe 所在文件夹的路径,例如 D:\K8s。
点击“确定”保存更改。
应用更改:
关闭所有窗口后,打开一个新的命令提示符窗口,输入以下命令检查是否成功添加:

kubectl version --client

你应该会看到 kubectl 客户端版本信息,这表示路径已正确配置。

在这里插入图片描述

创建本地集群

在Windows上创建本地Kubernetes集群,你可以使用Minikube或者kind(Kubernetes in Docker)。下面是两种方法的详细步骤:

方法 1:使用 Minikube 创建本地集群(这种方法我没有尝试,仅供参考)

Minikube 是一个方便的工具,可以在本地创建一个单节点的Kubernetes集群。

安装 Minikube

  1. 安装 VirtualBox 或 Hyper-V:

    Minikube 需要一个虚拟化工具来创建虚拟机。你可以选择安装 VirtualBox 或者使用 Windows 自带的 Hyper-V(Windows 10 专业版及以上支持)。

  2. 下载 Minikube:

    访问 Minikube的GitHub页面 下载最新的 Minikube 可执行文件。
    将下载的 minikube.exe 放到一个目录(例如 D:\Minikube),并将该目录添加到系统的 PATH 环境变量中。

  3. 启动 Minikube:

    打开 Windows Terminal 或者命令提示符,运行以下命令来启动 Minikube:

    minikube start --driver=virtualbox
    

    如果你使用的是 Hyper-V,则需要指定 driver 为 hyperv:

    minikube start --driver=hyperv
    
  4. 使用 Minikube 管理 Kubernetes 集群
    检查 Minikube 状态:

    minikube status
    

    访问 Minikube Dashboard(Kubernetes 仪表盘):

    minikube dashboard
    

    停止 Minikube:

    minikube stop
    

方法 2:使用 Kind 创建本地集群(我本地有docker,所以选择的这个方法)

Kind(Kubernetes in Docker) 是一个更轻量级的工具,可以使用 Docker 容器来运行 Kubernetes 集群。

安装 Kind

  1. 安装 Docker Desktop:
    前往 Docker 官方网站 下载并安装 Docker Desktop。
    启动 Docker Desktop 并确保其正常运行。

  2. 下载 Kind:
    访问 Kind的GitHub页面 下载最新的 Kind 可执行文件:
    (1)点击下图所示红框位置,会跳转到最新版本,如果需要特定版本可以下滑找到并点击对应版本。
    在这里插入图片描述
    (2)最新版本界面下滑到页面最底部,找到如下图部分,Windows系统点击红框位置开始下载
    在这里插入图片描述
    将下载的 kind.exe 放到一个目录(例如 D:\Kind),并将该目录添加到系统的 PATH 环境变量中(与上面方法相同)。

  3. 创建 Kind 集群:
    打开 Windows Terminal 或者命令提示符,运行以下命令来创建一个新的 Kind 集群:

    kind create cluster
    
  4. 使用 Kind 管理 Kubernetes 集群
    查看集群信息:

    kubectl cluster-info --context kind-kind
    

    删除 Kind 集群:

    kind delete cluster
    

    配置 Docker 镜像
    将本地镜像加载到 Kind 集群(假设你有一个本地 Docker 镜像名为 my-custom-image:latest):

    kind load docker-image my-custom-image:latest
    

连接到远程 Kubernetes 集群

  1. 获取远程集群的 kubeconfig 文件
    什么是 kubeconfig 文件:
    kubeconfig 文件包含了连接 Kubernetes 集群所需的配置信息,如 API 服务器的地址、证书、用户凭据等。
    通常,集群管理员会提供该文件。你需要确保这个文件是最新的且有正确的权限。
    获取 kubeconfig 文件:
    向集群管理员请求 kubeconfig 文件。
    也可以通过 Kubernetes 控制面板(如 AWS EKS、GCP GKE、Azure AKS)下载 kubeconfig 文件。

  2. 配置本地 kubectl 使用 kubeconfig 文件
    一旦你获得了 kubeconfig 文件,可以按照以下步骤进行配置:
    方法一:使用环境变量

    1. 设置 KUBECONFIG 环境变量:
      打开终端(Windows Terminal、PowerShell 或命令提示符)。
      设置 KUBECONFIG 环境变量以指向你的 kubeconfig 文件路径。例如:

      $env:KUBECONFIG="C:\path\to\your\kubeconfig"
      

      如果你使用的是 PowerShell:

      $env:KUBECONFIG = "C:\path\to\your\kubeconfig"
      

      如果你使用的是命令提示符(cmd),使用:

      set KUBECONFIG=C:\path\to\your\kubeconfig
      
    2. 验证连接:

      kubectl cluster-info
      

      如果显示了集群的 API 服务器和其他组件的信息,说明连接成功。

    方法二:复制 kubeconfig 文件到默认路径

    1. 将 kubeconfig 文件复制到默认路径:
      kubectl 默认在 ~/.kube/config(Linux 和 Mac)或 %USERPROFILE%.kube\config(Windows)路径下查找配置文件。
      将下载的 kubeconfig 文件放到上述路径下的 .kube 目录中,并重命名为 config。

    2. 验证连接:

      kubectl cluster-info
      

    方法三:合并 kubeconfig 文件
    如果你需要管理多个集群,可以将多个 kubeconfig 文件合并到一个文件中。

    1. 合并配置文件:

      kubectl config view --flatten > ~/.kube/combined-config
      set KUBECONFIG=%USERPROFILE%\.kube\config;C:\path\to\your\new\kubeconfig
      kubectl config view --flatten > %USERPROFILE%\.kube\combined-config
      
    2. 切换上下文:
      切换到不同的集群上下文:

      kubectl config use-context <context-name>
      
    3. 验证连接并操作远程集群
      查看集群节点:

      kubectl get nodes
      

      查看命名空间:

      kubectl get namespaces
      

      查看正在运行的 Pods:

      kubectl get pods --all-namespaces
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢磊磊学IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值