当前位置: 首页 > news >正文

跟着GPT学习 Kubernetes ,简称 K8s -- Kind(三)

在 Mac M1 上使用 Kind(Kubernetes in Docker)学习 Kubernetes 是一个非常合适的选择,因为 Kind 可以在本地轻松地创建一个 Kubernetes 集群,适合进行开发、测试和学习。让我们一步一步地从头开始,设置你的环境并逐步学习 Kubernetes。

第一步:安装必备工具

要使用 Kind 学习 Kubernetes,你需要安装以下工具:

  1. Homebrew:macOS 的包管理器,用来安装其他软件。
  2. Docker Desktop:Kind 依赖 Docker 来运行容器。
  3. Kind:用于在 Docker 上运行 Kubernetes。
  4. kubectl:Kubernetes 的命令行工具,用于管理 Kubernetes 集群。
1. 安装 Homebrew

Homebrew 是 macOS 上非常流行的包管理工具,可以方便地安装各种软件包。

  • 打开终端(Terminal),然后执行以下命令来安装 Homebrew:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  • 安装完成后,运行 brew 来检查 Homebrew 是否安装成功:

    brew
    
2. 安装 Docker Desktop

Docker 是一种容器化技术,Kind 需要 Docker 来运行 Kubernetes 节点。

  • 前往 Docker Desktop 下载页面。
  • 下载适用于 Apple Silicon (M1) 的 Docker Desktop 版本。
  • 下载后,打开安装包并按照提示安装 Docker Desktop。
  • 安装完成后,启动 Docker Desktop 并确保 Docker 正常运行。
3. 安装 Kind

Kind 是一个运行在 Docker 容器内的 Kubernetes 集群工具,非常适合本地开发和测试。

  • 使用 Homebrew 安装 Kind:

    brew install kind
    
  • 验证 Kind 是否安装成功:

    kind version
    

    你应该看到类似于 kind vX.Y.Z 的输出。

4. 安装 kubectl

kubectl 是 Kubernetes 的命令行工具,允许你与 Kubernetes 集群进行交互。

  • 使用 Homebrew 安装 kubectl:

    brew install kubectl
    
  • 验证 kubectl 是否安装成功:

    kubectl version --client
    

    你应该看到 kubectl 客户端的版本信息。

第二步:创建一个 Kind Kubernetes 集群

在安装了 Docker 和 Kind 之后,我们可以创建一个本地 Kubernetes 集群。

  1. 创建 Kind 集群

    打开终端,运行以下命令创建一个 Kind 集群。由于 Mac M1 使用的是 ARM 架构,我们需要指定一个 ARM64 兼容的节点镜像:

    kind create cluster --image kindest/node:v1.28.0
    

    kindest/node:v1.28.0 是一个与 M1 芯片(ARM64)兼容的 Kubernetes 节点镜像。如果你想使用其他版本,可以到 Kind 的 Docker Hub 页面查找合适的版本。

  2. 验证集群

    集群创建成功后,运行以下命令验证 Kubernetes 集群是否运行正常:

    kubectl cluster-info --context kind-kind
    

    你应该看到类似于 “Kubernetes control plane is running at …” 的输出,这意味着你的集群已经启动并运行。

第三步:学习 Kubernetes 基本概念

现在你已经在本地运行了一个 Kubernetes 集群,接下来可以学习 Kubernetes 的基础概念和操作。以下是一些关键概念和基本操作:

1. 了解 Kubernetes 基本概念
  • Pod:Kubernetes 中最小的部署单位,通常包含一个或多个容器。
  • Service:一种 Kubernetes 资源,用于暴露运行在一组 Pods 上的服务。
  • Deployment:用于管理无状态应用的 Kubernetes 控制器,负责管理 Pods 的副本集。
  • Namespace:一种虚拟集群,用于将资源分组和隔离。
2. 创建一个简单的 Kubernetes 资源

我们可以使用 kubectl 创建一个简单的 Nginx 应用,并通过 Service 暴露它。

  • 创建一个 Nginx Deployment:

    kubectl create deployment nginx --image=nginx
    

    这会创建一个运行 Nginx 镜像的 Deployment。

  • 查看 Pods 是否已经运行:

    kubectl get pods
    

    你应该看到一个名为 nginx 的 Pod 正在运行。

  • 暴露 Nginx Deployment,使其可以被外部访问:

    kubectl expose deployment nginx --port=80 --type=NodePort
    

    这会创建一个类型为 NodePort 的 Service,将 Nginx 暴露到集群外部。

  • 获取 Service 的详细信息:

    kubectl get services
    

    你会看到 Nginx Service 以及它分配的外部端口(NodePort)。

3. 使用 YAML 文件管理 Kubernetes 资源

Kubernetes 资源通常通过 YAML 文件来定义。让我们来创建一个简单的 YAML 文件来定义 Nginx Deployment。

  • 创建一个名为 nginx-deployment.yaml 的文件,内容如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: nginx-deployment
    spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80
    
  • 使用 kubectl apply 命令应用这个 YAML 文件:

    kubectl apply -f nginx-deployment.yaml
    

    这会创建一个新的 Nginx Deployment,运行两个副本(replicas)。

  • 查看 Deployment 和 Pods:

    kubectl get deployments
    kubectl get pods
    

第四步:探索更多 Kubernetes 特性

随着你对 Kubernetes 的了解逐渐深入,可以进一步学习和实验 Kubernetes 的高级功能和概念:

  • StatefulSet:用于管理有状态应用的控制器。
  • ConfigMap 和 Secret:用于管理配置数据和敏感信息。
  • Ingress:用于管理外部访问集群内部服务的规则。
  • Helm:Kubernetes 的包管理工具,用于安装和管理复杂应用。

第五步:管理和删除 Kind 集群

如果你想删除当前的 Kind 集群,可以使用以下命令:

kind delete cluster

这会删除整个 Kind 集群及其所有资源。

总结

通过以上步骤,你可以在 Mac M1 上成功安装 Kind,并创建一个本地 Kubernetes 集群。接下来,你可以通过阅读官方文档、参加在线课程或实验更多示例来进一步学习 Kubernetes。希望这些信息对你有所帮助!如果你有任何问题或需要进一步的帮助,请随时告诉我。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • redis 过期监听:高效管理数据生命周期
  • 回归预测|基于北方苍鹰优化极端梯度提升树的数据回归预测Matlab程序NGO-XGBoost多特征输入单输出
  • 光伏电站设备设施巡视卡之转变二维码登记卡
  • 计算机毕业设计 毕业季旅游一站式定制服务平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 使用kubeadm快速部署一套K8S集群
  • 设置虚拟机使用主机以太网而不是WiF连接
  • 普元EOS-低开页面下拉选择控件加载列表数据
  • 修改wls2上的默认用户为root
  • mariadb centos 7 安装
  • 百数功能插件技术解析:审批流程设置与数据填写便捷性探讨
  • 《Programming from the Ground Up》阅读笔记:p95-p102
  • Redis使用详解
  • LLM之基于llama-index部署本地embedding与GLM-4模型并初步搭建RAG(其他大模型也可,附上ollma方式运行)
  • 【设计模式】模板方法模式和迭代器模式
  • 【Docker】Linux系统以及威联通QNAP部署思源笔记的通用教程
  • [nginx文档翻译系列] 控制nginx
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Hibernate最全面试题
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • JS题目及答案整理
  • Laravel Mix运行时关于es2015报错解决方案
  • node入门
  • Python 反序列化安全问题(二)
  • React16时代,该用什么姿势写 React ?
  • Ruby 2.x 源代码分析:扩展 概述
  • VUE es6技巧写法(持续更新中~~~)
  • vue-router 实现分析
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于List、List?、ListObject的区别
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 悄悄地说一个bug
  • 微信开放平台全网发布【失败】的几点排查方法
  • Python 之网络式编程
  • 说说我为什么看好Spring Cloud Alibaba
  • 整理一些计算机基础知识!
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #{} 和 ${}区别
  • #Z0458. 树的中心2
  • #微信小程序:微信小程序常见的配置传旨
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (论文阅读40-45)图像描述1
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (生成器)yield与(迭代器)generator
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .gitignore不生效的解决方案