蚊章汇 - Kubernetes
type: channel
link: https://linuxcn.bwsl.wang/tag/Kubernetes/
items: 使用开源工具监控 Kubernetes 云成本
items: 分步指南：安装和访问 Kubernetes 仪表板
items: 如何在 Kubernetes 集群上安装 Ansible AWX
items: 使用 Lens Desktop 监控和调试 Kubernetes
items: 如何逐步安装 Kubernetes（k8s）指标服务器
items: 用 Tekton 在 Kubernetes 中编写你的第一条 CI/CD 流水线
items: 使用 Kubespray 安装 Kubernetes 集群
items: 如何在 RHEL 8 上安装 MiniKube
items: 如何用 Kubeadm 在 Debian 11 上安装 Kubernetes 集群
items: 在你的 Linux 家庭实验室上运行 Kubernetes 的 5 个理由

使用开源工具监控 Kubernetes 云成本
type: item
date: 2023-08-20T21:34:18+08:00
description: OpenCost 是一款与 Kubernetes 无缝集成的云成本监控工具，可让您实时跟踪云支出，从而相应地优化资源。Kubernetes 是一个强大的平台，用于管理云中的动态容器化应用，但可能很难理解成本发生在哪里。管理 Kubernetes 资源的成本效率可能是一个挑战。这就是 OpenCost 的用武之地。OpenCost 是一种云成本监控工具，与 Kubernetes 无缝集成，让你可以实时跟踪云支出，以便相应地优化资源。OpenCost 是一个开源 CNCF 沙盒项目 和 规范，用于实时监控与 Kubernetes 部署相关的云成本。该规范按服务、部署、命名空间、标签等对当前和历史 Kubernetes 云支出和资源分配进行建模。这些数据对于理解和优化 Kubernetes 从应用到基础设施的成本和性能至关重要。要求和安装开始使用 OpenCost 是一个相对简单的过程。OpenCost 使用 Prometheus 进行监控和指标存储。你可以从 Prometheus 社区的 Kubernetes Helm Chart 安装它。安装 Prometheus首先使用以下命令安装 Prometheus：$ helm install my-prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \ --namespace prometheus --create-namespace \ --set pushgateway.enabled=false --set alertmanager.enabled=false -f \ https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml 安装 OpenCost接下来，使用 kubectl 命令安装 OpenCost：$ kubectl apply --namespace opencost -f \ https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/opencost.yaml 此命令将 OpenCost 部署到你的集群并开始收集数据。这就是大多数安装所需的全部内容。你可以使用你自己的 Prometheus 安装或使用 OpenCost Helm Chart 自定义部署。测试和访问OpenCost 会自动检测它是否在 AWS、Azure 还是 GCP 上运行，你可以将其配置为为本地 Kubernetes 部署提供定价。首先转发 API 和 UI 访问的端口：$ kubectl port-forward --namespace opencost service/opencost 9003 9090 大约五分钟内，你可以验证 UI 和服务器是否正在运行，并且你可以通过 http://localhost:9090 访问 OpenCost UI。监控成本你已准备好开始使用部署到 Kubernetes 集群的 OpenCost 来监控云成本。OpenCost 仪表板提供对云支出的实时可见性，使你能够识别成本异常并优化云资源。你可以按节点、命名空间、pod、标签等查看云支出。kubectl cost 插件提供了对 Kubernetes 成本分配指标的简单 CLI 查询。它允许开发人员、运营商和其他人快速确定任何 Kubernetes 工作负载的成本和效率。$ kubectl cost --service-port 9003 \ --service-name opencost --kubecost-namespace opencost \ --allocation-path /allocation/compute pod \ --window 5m --show-efficiency=true +-------+---------+-------------+----------+---------------+ |CLUSTER|NAMESPACE|POD |MONTH RATE|COST EFFICIENCY| +-------+---------+-------------+----------+---------------+ |cl-one |kube-syst|coredns-db...| 1.486732 | 0.033660 | | | |coredns-...dm| 1.486732 | 0.032272 | | | |kube-prox..…

分步指南：安装和访问 Kubernetes 仪表板
type: item
date: 2023-08-05T21:25:00+08:00
description: Kubernetes 是一个开源容器编排平台，已成为大规模管理容器化应用的首选解决方案。虽然 Kubernetes 提供了强大的命令行工具来管理集群，但有时可视化界面可以使监控和管理部署变得更加容易。Kubernetes 仪表板是一个基于 Web 的用户界面，可让你可视化 Kubernetes 集群并与之交互。在这篇博文中，我们将逐步引导你完成安装和访问 Kubernetes Dashboard 的过程，使你能够简化 Kubernetes 管理任务。先决条件：在安装 Kubernetes Dashboard 之前，请确保你有一个正在运行的 Kubernetes 集群并具有必要的管理访问权限。安装 Kubernetes 仪表板为集群安装 Kubernetes 仪表板的简单方法是通过 Helm Chart。Kubernetes 仪表板现在依赖于 cert-manager 和 nginx-ingress-controller。幸运的是，可以使用 Helm Chart 自动安装这些依赖项。但是，如果你已经安装了这些组件，则可以在安装 Chart 时通过设置标志 –set=nginx.enabled=false 和 –set=cert-manager.enabled=false 来禁用它们的安装。事不宜迟，让我们进入安装步骤。1）安装 Helm使用终端或命令提示符访问集群的主节点。如果没有安装，请安装 helm。运行以下命令。$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh 2）添加 Kubernetes 仪表板 Helm 仓库运行以下 helm 命令来添加仪表板仓库：$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ $ helm repo list 3）安装 Kubernetes 仪表板要使用 helm 安装 Kubernetes 仪表板，请运行以下命令：$ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard 上面的输出确认仪表板已部署在 Kubernetes-dashboard 命名空间中。因此，要访问仪表板，请运行：$ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-nginx-controller 8443:443 现在，打开运行上述命令的系统的 Web 浏览器，输入以下 URL：https://localhost:8443 点击“ 接受风险并继续 Accept the Risk and Continue ”。正如你在上面看到的，我们需要一个令牌才能登录。因此，让我们在下一步中生成所需的令牌。4）为 Kubernetes 仪表板生成令牌再打开一个到主节点的 SSH 会话，创建一个服务帐户并使用以下 yaml 文件分配所需的权限：$ vi k8s-dashboard-account.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system 保存并退出文件。接下来通过运行以下命令创建服务帐户：$ kubectl create -f k8s-dashboard-account.yaml serviceaccount/admin-user created clusterrolebinding.rbac.authorization.k8s.io/admin-user created $ 现在…

如何在 Kubernetes 集群上安装 Ansible AWX
type: item
date: 2023-06-26T01:26:00+08:00
description: 在本文中，我们将逐步向你展示如何在 Kubernetes（k8s）集群上安装 Ansible AWX。Ansible AWX 是一个强大的开源工具，用于管理和自动化 IT 基础设施。AWX 为 Ansible 提供图形用户界面，使你可以轻松创建、安排和运行 Ansible 剧本 Playbook 。另一方面，Kubernetes 是一种流行的容器编排平台，广泛用于部署和管理容器化应用。先决条件：Kubernetes 集群Kubectl具有 sudo 权限和集群管理员权限的普通用户互联网连接步骤 1：安装 Helm如果你的系统上安装了 Helm，则在命令下运行以进行安装，$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod +x get_helm.sh $ ./get_helm.sh $ helm version 步骤 2：安装 AWX chart在 Kubernetes 上安装 AWX 的最简单方法是使用 AWX Helm “ 海图 chart ”。因此，要通过 “海图” 安装 AWX，首先使用以下 helm 命令添加仓库。（LCTT 译注：Kubernetes 生态中大量使用了和航海有关的比喻，因此本文在翻译时也采用了这些比喻）$ helm repo add awx-operator https://ansible.github.io/awx-operator/ "awx-operator" has been added to your repositories $ 注意：如果你之前已经添加过此仓库，请在命令下运行以获取最新版本的软件包。$ helm repo update 要通过 Helm 安装 awx-operator，请运行:$ helm install ansible-awx-operator awx-operator/awx-operator -n awx --create-namespace 这将下载 AWX 海图并将其安装在 awx 命名空间中的 Kubernetes 集群上。安装过程可能需要几分钟，请耐心等待。步骤 3：验证 AWX 操作员安装安装成功后，你可以通过运行以下命令来验证 AWX 操作员 operator 状态：$ sudo kubectl get pods -n awx 你应该看到这样的东西：步骤 4： 创建 PV、PVC 并部署 AWX yaml 文件AWX 需要 postgres 容器荚 pod 的持久卷。那么，让我们首先为本地卷创建一个存储类。注意：在本文中，我使用本地文件系统作为持久卷。$ vi local-storage-class.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage namespace: awxprovisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 保存并关闭文件，然后运行：$ kubectl create -f local-storage-class.yaml $ kubectl get sc -n awx NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false $ 接下来使用以下 pv.yaml 文件创建持久卷（PV）：$ vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: postgres-pv namespace: awx spec: capacity: storage: 10Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage local: path: /mnt/storage nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In…

使用 Lens Desktop 监控和调试 Kubernetes
type: item
date: 2023-05-05T03:36:00+08:00
description: Lens Desktop 是一个令人兴奋的 Kubernetes 工作平台。它是基于 OpenLens 资源库的一个定制化发行版本。通过本文来了解下 Lens Desktop 能做什么以及它是如何工作的。Lens Desktop 是免费的。你可以查看 https://app.k8slens.dev/subscribe 来了解更多内容。Lens Desktop 有如下优势：简单高效 —— 你无需学习 kubectl 命令可视化已有的 Kubernetes 资源基于开源代码构建可观测性 —— 实时的统计数据、事件和日志流错误和警告可以直接在 Lens 仪表盘上看到支持 EKS、AKS、GKE、Minikube、Rancher、k0s、k3s、OpenShift强大的社区支持 —— 有 450000 用户，在 GitHub 上共获得 17000 星Minikube 安装Minikube 是一个用于本地运行 Kubernetes 的工具。它运行一个单节点的 Kubernetes 集群，这样就可以在 Kubernetes 上进行日常软件开发的实践工作。我们将使用 Minikube 并验证 Lens 的用法。首先让我们在基于 Windows 的系统上安装 Minikube。你也可以把它安装在其他操作系统、虚拟机或笔记本电脑上。2 核以上 CPU2GB RAM20GB 空闲硬盘空间能连接网络容器或虚拟机管理器，如 Docker、VirtualBox在终端或命令提示符处，运行 minikube start 命令：minikube start --driver=virtualbox * minikube v1.12.3 on Microsoft Windows 10 Home Single Language 10.0.19044 Build 19044 * Using the virtualbox driver based on existing profile * minikube 1.26.0 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.26.0 * To disable this notice, run: ‘minikube config set WantUpdateNotification false’ * Starting control plane node minikube in cluster minikube * virtualbox “minikube” VM is missing, will recreate. * Creating virtualbox VM (CPUs=2, Memory=3000MB, Disk=20000MB) ... ! This VM is having trouble accessing https://k8s.gcr.io * To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/ * Preparing Kubernetes v1.18.3 on Docker 19.03.12 ... * Verifying Kubernetes components... * Enabled addons: default-storageclass, storage-provisioner * Done! kubectl is now configured to use “minikube” 进入你的 VirtualBox，并验证刚安装的 Minikube 虚拟机功能正常（图 1）。使用 minikube status 命令，查看状态是否与下面的输出一致：C:\>minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured 然后，使用 kubectl cluster-info 命令查看 KubeDNS 详情：kubectl cluster-info Kubernetes master is running at https://192.168.99.103:8443 KubeDNS is running at https://192.168.99.103:8443/api/v1/namespaces/kube-system…

如何逐步安装 Kubernetes（k8s）指标服务器
type: item
date: 2023-04-12T18:09:00+08:00
description: 在这篇文章中，我们将逐步介绍如何安装 Kubernetes 指标服务器。Kubernetes（k8s）指标服务器是一个组件，用于收集和聚合来自 Kubernetes 集群中各种来源（包括节点和 容器荚 Pod ）的指标数据。此数据可用于监控和优化资源利用率、识别潜在问题并提高 Kubernetes 集群的整体性能。指标服务器收集资源利用率数据，例如集群中节点和容器荚的 CPU 和内存使用情况。它提供了一个 API 端点，可用于查询此数据并检索集群中特定资源的指标。先决条件启动并运行 Kubernetes 集群（v1.21 或更高版本）。kubectl 命令行工具已安装，并配置为与你的 Kubernetes 集群交互。创建和修改 Kubernetes 对象的能力。事不宜迟，让我们深入了解安装步骤。步骤 1 下载指标服务器清单第一步是从 Kubernetes GitHub 仓库下载最新的指标服务器清单文件。使用下面的 curl 命令下载 yaml 文件：# curl -LO https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 如果你计划在高可用性模式下安装指标服务器，请下载以下清单文件：# curl https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml 步骤 2 修改指标服务器 Yaml 文件接下来，你需要修改指标服务器的 yaml 文件以设置一些配置选项：# vi components.yaml 找到 container 下的 args 部分，添加以下行：- --kubelet-insecure-tls 在 spec 下，添加以下参数：hostNetwork: true 保存并关闭文件。步骤 3 部署指标服务器现在，我们准备好部署指标服务器，运行以下 kubectl 命令：# kubectl apply -f components.yaml 步骤 4 验证指标服务器部署部署指标服务器后，通过检查在 kube-system 命名空间中运行的容器荚状态来验证它的状态：# kubectl get pods -n kube-system 上面的输出确认指标服务器容器荚已启动并正在运行。步骤 5 测试指标服务器安装最后，你可以通过运行以下 kubectl 命令来测试指标服务器：# kubectl top nodes 此命令应显示集群中每个节点的资源利用率，包括 CPU 和内存使用率。要查看当前命名空间或特定命名空间的容器荚资源利用率，请运行：# kubectl top pod # kubectl top pod -n kube-system 这就是这篇文章的全部内容，我希望你能从中找到有用的信息。请在下面的评论部分发表你的反馈和疑问。（题图：MJ: Kubernetes container paper art light blue background ultra-detailed topview）via: https://www.linuxtechi.com/how-to-install-kubernetes-metrics-server/作者：Pradeep Kumar 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

用 Tekton 在 Kubernetes 中编写你的第一条 CI/CD 流水线
type: item
date: 2023-04-02T02:08:51+08:00
description: Tekton 是一个用于创建持续集成和持续交付（CI/CD）系统的 Kubernetes 原生开源框架。Tekton 是一个用于创建持续集成和持续交付（CI/CD）系统的 Kubernetes 原生开源框架。通过对底层实施细节的抽象，它还可以帮助你在多个云供应商或企业内部系统中进行端到端（构建、测试、部署）应用开发。Tekton 介绍Tekton 最初被称为 Knative Build，后来被重组为独立的开源项目，有自己的 治理组织，现在是属于 Linux 基金会 的项目。Tekton 提供了一个集群内的容器镜像构建和部署工作流程，换句话说，它是一个 持续集成 continuous integration （CI）和 持续交付 continuous delivery （CD）服务。它由 Tekton 流水线和几个支持组件如 Tekton CLI、Triggers 和 Catalog 等组成。Tekton 是一个 Kubernetes 原生应用。它在 Kubernetes 集群中作为扩展被安装和运行，由一套Kubernetes 定制化资源组成，定义了你为流水线创建和复用的构建块。由于 Tekton 是一种 Kubernetes 原生技术，所以它非常容易扩展。当你需要增加你的工作负载时，你只需向你的集群添加节点就可以了。由于其可扩展的设计和社区贡献的组件库，它也很容易定制。对于需要 CI/CD 系统来开展工作的开发人员，和为其组织内的开发人员建立 CI/CD 系统的平台工程师，Tekton 是理想选择。Tekton 组件构建 CI/CD 流水线的过程非常复杂，因此 Tekton 为每一步都提供工具。以下是 Tekton 提供的主要组件： 流水线 Pipeline： 定义了一组 Kubernetes 自定义资源，作为你用来组装 CI/CD 流水线的构建块。 触发器 Triggers ：一种 Kubernetes 自定义资源，允许你根据从事件有效载荷中提取的信息来创建流水线。例如，你可以在每次创建 Git 仓库的合并请求时，触发流水线的实例化和执行。 命令行 CLI ：提供一个名为 tkn 的命令行界面，你可以使用它从终端与 Tekton 进行交互。 仪表盘 Dashboard ：是 Tekton 流水线的一个基于网页的图形界面，显示流水线的执行信息。 目录 Catalog ：是一个高质量的、由社区贡献的 Tekton 构建块（任务、流水线等），可在你自己的流水线中使用。 中心 Hub ：是一个基于网页的图形界面，用于访问 Tekton 目录。 操作员 Operator ：是一种 Kubernetes 操作员模式，你可以在 Kubernetes 集群中安装、更新、升级和删除 Tekton 项目。 链 Chains ：是一个 Kubernetes 自定义资源定义 Custom Resource Definition （CRD）控制器，使你可以在 Tekton 中处理供应链安全的问题。正在开发中。 结果 Results ：旨在帮助用户对 CI/CD 工作负载历史进行逻辑分组，并将长期结果的存储从流水线控制器中分离出来。Tekton 术语 步骤 Step ：是 CI/CD 工作流程中最基本的实体，例如为 Python 网络应用程序运行一些单元测试或编译一个 Java 程序。Tekton 使用容器镜像执行每个步骤。 任务 Task ：:kissing:* 是按特定顺序排列的步骤的集合。Tekton 以 Kubernetes 容器荚 的形式运行任务，其中每个步骤都成为 容器荚 pod 中的一个运行容器。 流水线 Pipelines ：是按特定顺序排列的任务的集合。Tekton 把所有任务连接成一个 有向无环图 directed acyclic graph （DAG），并按顺序执行图。换句话说，它创建了一些 Kubernetes 容器荚，并确保每个容器荚按预期成功运行。 流水线运行 PipelineRun ：顾名思义，是一条流水线的具体执行。 任务运行 TaskRun ：是一个任务的具体执行。你可以选择在流水线外运行一次任务运行，可以通过它查看任务中每个步骤执行的具体情况。创建你的 CI/CD 流水线开始使用 Tekton 的最简单方法是自己编写一个简单的流水线。如果你每天都在使用 Kubernetes，那你可能对 YAML 很熟悉，这正是 Tekton 流水线的定义方式。下面是一个克隆代码库的简单流水线的例子。首先，创建一个 task.yaml 文件，用你喜欢的文本编辑器打开它。这个文件定义了你要执行的 步骤 Step 。在这个例子中，就是克隆一个仓库，所以我把这个步骤命名为 “clone”。该文件设置了一些环境变量，然后使用一个简单的 she…

使用 Kubespray 安装 Kubernetes 集群
type: item
date: 2023-03-30T15:45:00+08:00
description: 你是否正在寻找有关如何使用 Kubespray 安装 Kubernetes（k8s）的简单指南？此页面上的分步指南将向你展示如何在 Linux 系统上使用 Kubespray 安装 Kubernetes 集群。Kubespray 是一个自由开源的工具，它提供了 Ansible 剧本 playbook 来部署和管理 Kubernetes 集群。它旨在简化跨多个节点的 Kubernetes 集群的安装过程，允许用户快速轻松地部署和管理生产就绪的 Kubernetes 集群。它支持一系列操作系统，包括 Ubuntu、CentOS、Rocky Linux 和 Red Hat Enterprise Linux（RHEL），它可以在各种平台上部署 Kubernetes，包括裸机、公共云和私有云。在本指南中，我们使用以下实验室：Ansible 节点（Kubespray 节点）：最小安装的 Ubuntu 22.04 LTS（192.168.1.240）3 个控制器节点：最小安装的 Rocky Linux 9（192.168.1.241/242/243）2 个工作节点：最小安装的 Rocky Linux 9（192.168.1.244/245）Kubespray 的最低系统要求主节点：1500 MB RAM、2 个 CPU 和 20 GB 可用磁盘空间工作节点：1024 MB、2 个 CPU、20 GB 可用磁盘空间Ansible 节点：1024 MB、1 个 CPU 和 20 GB 磁盘空间每个节点上的互联网连接拥有 sudo 管理员权限事不宜迟，让我们深入了解安装步骤。步骤 1）配置 Kubespray 节点登录到你的 Ubuntu 22.04 系统并安装 Ansible。运行以下一组命令：$ sudo apt update $ sudo apt install git python3 python3-pip -y $ git clone https://github.com/kubernetes-incubator/kubespray.git $ cd kubespray $ pip install -r requirements.txt 验证 Ansible 版本，运行：$ ansible --version 创建主机清单，运行以下命令，不要忘记替换适合你部署的 IP 地址：$ cp -rfp inventory/sample inventory/mycluster $ declare -a IPS=(192.168.1.241 192.168.1.241 192.168.1.242 192.168.1.243 192.168.1.244 192.168.1.245) $ CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]} 修改清单文件，设置 3 个控制节点和 2 个工作节点：$ vi inventory/mycluster/hosts.yaml 保存并关闭文件。查看并修改文件 inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml 中的以下参数：kube_version: v1.26.2 kube_network_plugin: calico kube_pods_subnet: 10.233.64.0/18 kube_service_addresses: 10.233.0.0/18 cluster_name: linuxtechi.local 要启用 Kuberenetes 仪表板和入口控制器等插件，请在文件 inventory/mycluster/group_vars/k8s_cluster/addons.yml 中将参数设置为已启用：$ vi inventory/mycluster/group_vars/k8s_cluster/addons.yml dashboard_enabled: true ingress_nginx_enabled: true ingress_nginx_host_network: true 保存并退出文件。步骤 2）将 SSH 密钥从 Ansible 节点复制到所有其他节点首先在你的 Ansible 节点上为你的本地用户生成 SSH 密钥：$ ssh-keygen 使用 ssh-copy-id 命令复制 SSH 密钥：$ ssh-copy-id sysops@192.168.1.241 $ ssh-copy-id sysops@192.168.1.242 $ ssh-copy-id sysops@1…

如何在 RHEL 8 上安装 MiniKube
type: item
date: 2023-03-16T07:17:00+08:00
description: 在这篇文章中，我们将逐步介绍如何在 RHEL 8、Rocky Linux 8 或 AlmaLinux 8 上安装 MiniKube。MiniKube 是一个跨平台的开源工具，可以让你在本地机器上部署单节点 Kubernetes 集群。Kubernetes，也被称为 k8s，或简称 Kube，是一个开源的容器编排平台，用于容器的自动化扩展和部署。MiniKube 集群帮助开发人员和管理员在集群中构建他们的测试环境。MiniKube 的先决条件最小化安装的 RHEL 8 或 Rocky Linux 8 或 AlmaLinux 8本地配置的 RHEL 8 仓库或订阅至少 2GB RAM 和 2 个 vCPU20GB 硬盘空间具有管理员身份的 sudo 用户稳定的互联网连接Docker 或虚拟机管理器，如 VirtualBox、KVM 和 VMware 等在这篇文章中，我们将使用 Docker 作为 MiniKube 的驱动程序。满足所有先决条件后，现在是时候卷起袖子动手了。步骤 1）启用官方 Docker 仓库要启用 Docker 官方仓库，运行：$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo $ sudo dnf repolist 步骤 2）安装 Docker CE（社区版）运行以下 dnf 命令来安装 Docker 及其依赖项：$ sudo dnf install docker-ce docker-ce-cli containerd.io -y 输出：安装 Docker 后启动并启用它的服务，运行以下 systemctl 命令：$ sudo systemctl start docker $ sudo systemctl start docker 允许你的本地用户在没有 sudo 的情况下运行 docker 命令，运行：$ sudo usermod -aG docker $USER $ newgrp docker 步骤 3）安装 kubectl 二进制文件kubectl 是一个命令行工具，它通过 API 与 Kubernetes 集群进行交互。我们使用 kubectl 部署应用。默认情况下，kubectl 不包含在 RHEL 8 、Rocky Linux 8 或 AlmaLinux 8 软件包仓库中。因此，我们将使用下面的命令手动安装它：$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" $ sudo cp kubectl /usr/local/bin/ && sudo chmod +x /usr/local/bin/kubectl $ kubectl version --client 以上命令的输出如下所示：步骤 4）下载 MiniKube 二进制文件并启动集群安装 kubectl 后，让我们使用以下命令下载并安装 MiniKube 二进制文件：$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 $ sudo install minikube-linux-amd64 /usr/local/bin/minikube 现在使用下面的命令启动 MiniKube 集群：$ minikube start --driver docker 上面的输出确认 minikube 命令已经使用 docker 作为驱动程序启动了单节点 Kubernetes 集群。运行下面的 minikube 命令来验证本地 Kubernetes 集群的状态：$ minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured $ $ minikube ip 192.168.49.2 $ 要停止 MiniKube 集群，请执行：$ minikube stop 执行 kubectl 命令查看集群和节点信息：$ kubectl cluster-info $ kubectl get nodes 步骤 5）测试和验证 Kubernetes 集群为了测试 Kubernetes 集群，让我们尝试使用 echo 服务器镜像创建 k8s 部署，它相当于 HTTP Web 服务器并将其作为服…

如何用 Kubeadm 在 Debian 11 上安装 Kubernetes 集群
type: item
date: 2022-11-30T17:19:30+08:00
description: 你是否在寻找一份在 Debian 11（Bullseye）上安装 Kubernetes 集群的简易指南？这份分步指南将向你展示如何使用 Kubeadm 工具在 Debian 11 上安装 Kubernetes 集群。Kubernetes（k8s）集群包含主控节点和工作节点，用于运行容器化的应用程序。主控节点作为控制平面，工作节点为实际工作负载提供环境。前置条件：已安装 Debian 112 CPU / vCPU2 GB RAM20 GB 空闲硬盘空间有管理员权限的 sudo 用户稳定的网络连接实验环境配置：在本文中，我使用了 3 个 Debian 11 系统的节点，配置如下主控节点（k8s-master） – 192.168.1.236工作节点 1（k8s-worker1） – 192.168.1.237工作节点 2（k8s-worker2） – 192.168.1.238事不宜迟，我们直接进入安装步骤。1、设置主机名和更新 /etc/hosts 文件在主控节点和工作节点上使用 hostnamectl 命令来设置主机名：$ sudo hostnamectl set-hostname "k8s-master" // 在主控节点运行 $ sudo hostnamectl set-hostname "k8s-worker1" // 在工作节点 1 运行 $ sudo hostnamectl set-hostname "k8s-worker2" // 在工作节点 2 运行 在所有节点的 /etc/hosts 文件末尾添加下面几行内容：192.168.1.236 k8s-master 192.168.1.237 k8s-worker1 192.168.1.238 k8s-worker2 2、在所有节点上关闭交换分区我推荐关闭交换分区，以便更丝滑地使用 kubelet。在所有节点上执行以下命令来关闭交换分区：$ sudo swapoff -a $ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 3、配置 Kubernetes 集群相关的防火墙规则如果你的操作系统防火墙是打开的，请分别在主控节点和工作节点允许以下的端口。在主控节点，执行：$ sudo ufw allow 6443/tcp $ sudo ufw allow 2379/tcp $ sudo ufw allow 2380/tcp $ sudo ufw allow 10250/tcp $ sudo ufw allow 10251/tcp $ sudo ufw allow 10252/tcp $ sudo ufw allow 10255/tcp $ sudo ufw reload 在工作节点，执行：$ sudo ufw allow 10250/tcp $ sudo ufw allow 30000:32767/tcp $ sudo ufw reload 注意：如果你的 Debian 11 系统防火墙是关闭的，可以跳过此步骤。4、在所有节点安装 Containerd 运行时Containerd 是容器运行时的行业标准，所有节点必须安装 Containerd。先在所有节点上配置如下的核心参数，再安装 Containerd。$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF $ sudo modprobe overlay $ sudo modprobe br_netfilter $ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF 运行如下命令，以使上面的更改生效：$ sudo sysctl --system 现在，在所有节点上运行如下 apt 命令来安装 Conatinerd。$ sudo apt update $ sudo apt -y install containerd 在所有节点上运行如下命令来配置 Containerd：$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1 在所有节点上设置 cgroupdriver 为 systemd，编辑 /etc/containerd/config.toml 文件，找到 [plugins."…

在你的 Linux 家庭实验室上运行 Kubernetes 的 5 个理由
type: item
date: 2022-11-22T08:01:36+08:00
description: Kubernetes 的优势不仅在于它能够做什么，还在于知道它能为你做什么。在 树莓派家庭实验室上运行 Kubernetes 的 5 个理由 这篇文章中，我解释了为什么推荐在家里使用 Kubernetes。其中的理由相对来说会有点随意，并且主要于关注结果。除了 Kubernetes 好用的功能之外，还有其他几个应将 Kubernetes 包含在你自己的计算机的理由。（LCTT 译注： 家庭实验室 Homelab 指的是安置在你家里的一个服务器或者多服务器的组合配置。在之上托管了多个服务和虚拟系统，以此来进行测试、开发，或者提供家庭功能用途。）1、Kubernetes 是基于 Linux 而建立的Kubernetes 有很高的知名度。对于一些人来说，Kubernetes 是一种神秘技术，有一个不好念的名字；而对另一些人来说，Kubernetes 就好像是牧羊犬放牧羊群一样，可以帮助他们管理过多的容器；对于其它人来说，Kubernetes 是一种 云 cloud 的操作系统，是 实效云开发 effective cloud development 的一个有用的界面；对于大多数人来说，Kubernetes 可能是他们从未听说过的后端软件。正如人们所想的那样，Kubernetes 具有所有这些能力，甚至有更多的功能。并非每个人都以相同的方式使用 Kubernetes，但如果你主要的工作是系统管理，你会发现 Kubernetes 只是又一个 Linux 命令。我有一件 T 恤，上面写着 “ 容器就是 Linux Containers are Linux ”，它的意思是显而易见的。容器技术使用 cgroup，来运行包含一个或一组应用程序的最小 Linux 操作系统镜像。当你运行容器时，实际上你就是在运行 Linux。虽然 Kubernetes 能在许多平台上使用，但 Kubernetes 管理的是 Linux 容器。当你通过终端与 Kubernetes 交互时，就像是使用 Linux：有命令、选项、参数和语法。运行 Kubernetes 的 kubeadm 或（在 OKD 或 OpenShift 上）运行 oc 命令，你会感觉到很熟悉，是因为它们的工作方式与你习惯使用的任何其他 Linux 命令一样。开始时看似陌生的东西很快就会变得自然，任何有兴趣在终端上花时间的 Linux 用户都可以在 Kubernetes 中探索到许多有趣的东西。2、Kubernetes 很灵活在过去，Kubernetes 有点死板，因为从本质上来说，它仅能支持一个 容器运行时 container runtime 。这个规定非常严格，以至于今天需要一个 硬编码的垫片 hardcoded shim ，才能绕过这个遗留问题。幸运的是，如今 Kubernetes 已经变得足够灵活，可以满足管理员的许多不同需求了。Podman 和 CRI-O 可用作于容器引擎，它们都可以与 systemd 集成（这是因为 Kubernetes 的底层都是 Linux）。你可以自己选择 Kubernetes 所使用的文件系统、集群大小和构造、监控工具、镜像、编程语言等等配置。甚至现在有些人说 Kubernetes 有 太多 的选择了。3、学习 Kubernetes 有助于个人发展容器是一个硕果累累的事物，它们会快速地成倍增长，这就是它的设计。容器旨在扩展，它们通过生成克隆来扩展。将容器分组（称为 “ 容器荚 pod ”），并自动管理容器荚的生命周期，这就是 Kubernetes 运用的方式。它正在改变服务器的运行方式。你可能不需要无限扩展的容器集合，也不需要任何东西来帮助你管理正运行的一或两个容器。但是，如果你希望受益于处理容器荚的能力，那么 Kubernetes 正是你需要学习的工具。随着越来越多的公司和组织走向全球，拥抱 数字化转型，Kubernetes 正在成为 IT 领域的必备技能。如果你想要在这个领域中发展，那么现在开始学习 Kubernetes 并熟悉它的常见问题及其解决方案，将会是一项很好的投资。4、Kubernetes 让容器更有意义你可能还记得几年前，当开源项目刚开始将它们的代码作为容器镜像分发时，对于许多人来说，容器这一概念是令人费解的：没有多少系统管理员真正理解 容器是什么，或者明白容器的边界在哪里、如何进入容器，以及为什么数据不能存在于容器内。现在，IT 界（包括开发人员在内）都对容器的概念都十分熟悉了。对于现代的 CI/CD 工作流程 来说，交付给容器十分有意义。不过，对于系统管理员来说，容器的优势如下：安装容器（理论上）比等待发行版更新其软件包更为容易，而且容器可以扩展。然而，在你使用 Kubernetes 之前，你很可能都不会真正地感受到这些好处。当你开始使用 K…