分类 容器与云 下的文章

了解如何在 Arch Linux 上安装 Docker,并使用 Docker Compose 和制表符补全为运行容器做好准备。

在 Arch Linux 上安装 Docker 很简单。它可以在 Extra 仓库中找到,你可以简单地 执行 pacman 魔法

sudo pacman -S docker

但要在 Arch Linux 上正确运行 Docker,还需要执行更多步骤。

让 Arch Docker 做好准备

这一切都归结为以下步骤:

  • 从 Arch 仓库安装 Docker
  • 启动 Docker 守护进程并在每次启动时自动运行
  • 将用户添加到 docker 组以运行 docker 命令而无需 sudo

让我们看看详细步骤。

步骤 1:安装 Docker 包

打开终端并使用以下命令:

sudo pacman -S docker

输入密码并在询问时按 Y

这可能需要一些时间,具体取决于你使用的镜像。

? 如果你看到找不到包或 404 错误,那么你的同步数据库可能是旧的。使用以下命令更新系统(它将下载大量软件包并需要时间): sudo pacman -Syu

步骤 2:启动 docker 守护进程

Docker 已安装但未运行。你应该在第一次运行 Docker 命令之前启动 Docker 守护进程:

sudo systemctl start docker.service

我还建议启用 Docker 服务,以便 Docker 守护进程在系统启动时自动启动。

sudo systemctl enable docker.service

这样,你就可以开始运行 docker 命令了。你不再需要手动启动 Docker 服务。

步骤 3:将用户添加到 docker 组

Docker 已安装并且 Docker 服务正在运行。你几乎已准备好运行 docker 命令。

但是,默认情况下,你需要将 sudodocker 命令一起使用。这很烦人。

为了避免在每个 docker 命令中使用 sudo,你可以将自己(或任何其他用户)添加到 docker 组,如下所示:

sudo usermod -aG docker $USER

你必须注销(或关闭终端)并重新登录才能使上述更改生效。如果你不想这样做,请使用以下命令:

newgrp docker

现在已经准备好了。我们来测试一下。

步骤 4:验证 docker 安装

Docker 本身提供了一个很小的 Docker 镜像来测试 Docker 安装。运行它并查看是否一切正常:

docker run hello-world

你应该看到类似这样的输出,表明 Docker 成功运行:

恭喜! 你已经在 Arch Linux 上成功安装了 Docker。

可选:安装 Docker Compose

Docker Compose 已经成为 Docker 不可或缺的一部分。它允许你管理多个容器应用。

较早的经典 Compose 由 docker-compose Python 软件包提供。Docker 还将其移植到 Go 中,并通过 docker compose 提供,但该软件包附带 Docker Desktop

在这个阶段,我建议使用经典的 docker-compose 插件并使用以下命令安装它:

sudo pacman -S docker-compose

故障排除技巧

以下是你可能遇到的一些常见问题以及可能的解决方案:

制表符补全不适用于 docker 子命令

如果你想对 docker 命令选项使用制表符补全(例如将 im 补全到 images 等),请安装 bash-completion 包:

sudo pacman -S bash-completion

关闭终端并启动一个新终端。你现在应该能够通过 docker 命令使用制表符补全功能。

无法连接到 Docker 守护进程错误

如果你看到以下错误:

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

那是因为 Docker 守护进程没有运行。参考步骤 2,启动 Docker 服务,确保其正在运行并启用它,以便 Docker 守护进程在每次启动时自动运行。

sudo systemctl start docker.service
sudo systemctl enable docker.service

尝试连接到 Docker 守护程序套接字时权限被拒绝

如果你看到此错误:

ddocker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

这是因为你需要使用 sudo 运行 docker 命令,或者将用户添加到 docker 组以在不使用 sudo 的情况下运行 docker 命令。

我希望这篇简短的文章可以帮助你在 Arch Linux 上运行 Docker。

(题图:MJ/9951f8bf-d2e5-4335-bd86-ebf89cba654d)


via: https://itsfoss.com/install-docker-arch-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

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、标签等查看云支出。

OpenCost monitoring console

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...7| 1.359577 |      0.002200 |
|       |         |kube-prox...x| 1.359577 |      0.002470 |
|       |opencost |opencost...5t| 0.459713 |      0.187180 |
|       |kube-syst|aws-node-cbwl| 0.342340 |      0.134960 |
|       |         |aws-node-gbfh| 0.342340 |      0.133760 |
|       |prometheu|my-prome...pv| 0.000000 |      0.000000 |
|       |         |my-prome...hn| 0.000000 |      0.000000 |
|       |         |my-prome...89| 0.000000 |      0.000000 |
+-------+---------+-------------+----------+---------------+
| SUMMED|         |             | 6.837011 |               |
+-------+---------+-------------+----------+---------------+

你还可以集成 API,以编程方式将数据提取到你选择的平台中。

Kubernetes 优化策略

现在你已经掌握了云成本,是时候优化你的 Kubernetes 环境了。优化是一个迭代过程。从栈的顶部(容器)开始并遍历每一层。每一步的效率都会复合。有很多方法可以优化 Kubernetes 以提高成本效率,例如:

  • 查找废弃的工作负载和未申明的卷:不再使用或断开连接的容器荚和存储会继续消耗资源而不提供价值。
  • 调整你的工作负载大小:确保你为你的工作负载使用正确大小的容器。调查分配过多和分配不足的容器。
  • 自动扩展:自动扩展可以帮助你仅在需要时使用资源来节省成本。
  • 调整集群大小:节点过多或过大可能会导致效率低下。在容量、可用性和性能之间找到适当的平衡可能会大大降低成本。
  • 研究更便宜的节点类型:CPU、RAM、网络和存储有很多变化。切换到 ARM 架构可能会带来更大的节省。
  • 投资 FinOps 团队:组织内的专门团队可以通过协调预留实例、现货实例和节省计划来寻找实现更大节省的方法。

从今天开始

监控 Kubernetes 环境中的成本可能具有挑战性,但使用 OpenCost 则不必如此。要开始使用 OpenCost 并控制你的云支出,请访问 OpenCost 网站,在 GitHub 中获取代码,查看 OpenCost 文档,并参与 CNCF Slack 中的 #opencost 频道。

(题图:MJ/5de557f1-464c-480c-8698-130748f60b20)


via: https://opensource.com/article/23/3/kubernetes-cloud-cost-monitoring

作者:Matt Ray 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

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
$

现在,为管理员用户生成令牌,运行:

$ kubectl -n kube-system  create token admin-user

复制此令牌并返回浏览器,将其粘贴到“ 输入令牌 Enter token ”字段中,如下所示:

点击“ 登录 Login ”。

5) 访问 Kubernetes 仪表板

当我们点击上面的“登录”时,我们将看到以下仪表板:

太好了,你现在已登录 Kubernetes 仪表板。以下是一些需要探索的关键特性和功能:

  • 集群概览:获取集群运行状况、资源利用率和运行 Pod 的概览。
  • 工作负载:查看和管理你的部署、副本集、有状态集和守护程序集。
  • 服务:监控和管理你的服务,包括负载均衡器和外部端点。
  • 配置:探索你的配置映射、密钥和持久卷声明。
  • 存储:管理持久卷和存储类。
  • 命名空间:在命名空间之间切换以查看和管理不同项目或团队的资源。

这就是这篇文章的全部内容,我希望你发现它有用且内容丰富。请在下面的评论部分发表你的疑问和反馈。

(题图:MJ/1bd0efb0-d4ee-4c8b-854a-49dbf38c5dd7)


via: https://www.linuxtechi.com/how-to-install-kubernetes-dashboard/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

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 核以上 CPU
  • 2GB RAM
  • 20GB 空闲硬盘空间
  • 能连接网络
  • 容器或虚拟机管理器,如 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)。

Figure 1: Minikube virtual machine in virtual box

使用 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/services/kube-dns:dns/proxy

你可以使用 kubectl cluster-info dump 命令来调试和诊断集群问题。

当 Minikube 安装完成后,安装 kubectlhttps://kubernetes.io/docs/tasks/tools/)。它是一个命令行集群,用于对 Kubernetes 集群和 Minikube 执行命令。

Figure 2: Lens

执行 kubectl get nodes 命令获取所有 节点 node 的详情,在本例中是获取 Minikube 的详情:

C:\>kubectl get nodes
NAME       STATUS   ROLES    AGE     VERSION
minikube   Ready    master   7m57s   v1.18.3

使用 kubectl get all 命令获取默认命名空间下的所有详情:

C:\>kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   7m58s

我们现在已经有一个 Minikube 集群,并准备好了 Kubectl。下一步是安装和配置 Lens,并用示例应用程序来验证。

Lens 的安装和配置

打开 https://k8slens.dev/ ,下载与你的操作系统匹配的安装包。

然后,参照屏幕上的教程来安装 Lens,安装完成后打开 Lens。你会发现在目录中有一个 minikube(图 3)。

Figure 3: Lens catalogue

点击 “minikube” 后,你就进入了 Minikube 的世界,你会爱上它的。

点击 节点 node 获取有关 kubectl get nodes 命令输出的 节点 node 详情。

现在,你可以使用 Lens 了。

Figure 4: Lens cluster

我们现在部署 https://github.com/GoogleCloudPlatform/microservices-demo,这是一个云原生微服务演示应用程序。它有 11 层的微服务应用,是一个基于网络的电子商务应用。

下载这个应用程序,把它解压到与 Minikube 相同的目录。

进入 release 目录,执行以下命令。

kubectl apply -f kubernetes-manifests.yaml

deployment.apps/emailservice created
service/emailservice created
deployment.apps/checkoutservice created
service/checkoutservice created
deployment.apps/recommendationservice created
service/recommendationservice created
deployment.apps/frontend created
service/frontend created
service/frontend-external created
deployment.apps/paymentservice created
service/paymentservice created
deployment.apps/productcatalogservice created
service/productcatalogservice created
deployment.apps/cartservice created
service/cartservice created
deployment.apps/loadgenerator created
deployment.apps/currencyservice created
service/currencyservice created
deployment.apps/shippingservice created
service/shippingservice created
deployment.apps/redis-cart created
service/redis-cart created
deployment.apps/adservice created
service/adservice created

安装过程现在应该已经开始了,不过它需要一些时间来反映出我们使用了 kubectl 命令。

Figure 5: Lens nodes

kubectl get pods
NAME                 READY   STATUS    RESTARTS   AGE
adservice-775d8b9bf5-cp7jr   0/1     Pending   0          8h
cartservice-79749895f5-jrq4d  1/1     Running   0         8h
checkoutservice-5645bf9c65-882m4  1/1   Running  0        8h
currencyservice-545c79d477-8rhg7  1/1  Running   0         8h
emailservice-7cc5c74b4f-hk74s     1/1  Running   0        8h
frontend-9cdf787f5-klfkh    1/1     Running   1          8h
loadgenerator-7b6874cb4c-645v9   1/1  Running   0        8h
paymentservice-5f74bc7b87-l4248  1/1  Running   0        8h
productcatalogservice-6846f59899-v4q4w  1/1  Running  0  8h
recommendationservice-d9c6c8b55-m2x9k  1/1  Running   0  8h
redis-cart-57bd646894-v7kfr    0/1   Pending   0         8h
shippingservice-8685dd9855-pmgjm  1/1  Running  0        8h

表 1 列出了你可以通过 kubectl 来获取信息的几个命令。

Figure 6: Lens pods

描述命令
列出节点kubectl get node
列出集群中的所有资源kubectl get all –all-namespaces
列出部署kubectl get deployment
显示部署的完整状态kubectl describe deployment <deployment_name>
修改集群上的部署kubectl edit deployment <deployment_name>
删除部署kubectl delete deployment <deployment_name>
列出容器荚kubectl get pod
删除容器荚kubectl delete pod <pod_name>
显示容器荚的完整状态kubectl describe pod <pod_name>
在 Shell 中运行一个单容器荚kubectl exec -it <pod_name> /bin/bash
列出机密信息kubectl get secrets
列出服务kubectl get services
列出服务的完整状态kubectl describe services
修改集群中的服务kubectl edit services / kubectl edit deployment <deployment_name>
列出命名空间kubectl get namespace <namespace_name>
打印容器荚日志kubectl logs <pod_name>
打印容器荚中特定容器的日志kubectl logs -c <container_name> <pod_name>

Lens 不仅可以帮你获取表 1 中列出的所有信息,它还可以获取指定集群的信息。我们还能用 Lens 来对 Kubernetes 资源进行编辑和删除操作。

Figure 7: Lens deployments

我们来看下是如何操作的。在 工作负载 Workloads 部分选择 容器荚 Pod (图 6),我们能通过 Lens 来编辑、删除、查看日志、访问 容器荚 Pod 的终端,这是不是很酷?

Figure 8: Lens Replicasets

你可以验证 工作负载 Workloads 区域中所有 部署 deployments (图 7), 工作负载 Workloads 区域中所有 副本 Replicasets (图 8), 配置 Config 区域中所有 密钥 Secrets (图 9),以及 网络 Network 区域中所有 服务 Services 是否都正常(图 10),

Figure 9: Lens Secrets

你可以看到,跳转到所有的资源以及在一个地方高效地查看所有资源就是如此轻松。我们可以用 Lens 修改 YAML 文件,在运行时应用它来查看变更。

Figure 10: Lens Services

对于配置在不同的云服务商部署的多个集群,我们仍可以用 Lens 来进行观察和故障处理。

(题图:MJ/069da8c5-9043-46b3-9b14-87a0ffc6bb35)


via: https://www.opensourceforu.com/2022/09/monitoring-and-debugging-kubernetes-with-lens-desktop/

作者:Mitesh Soni 选题:lkxed 译者:lxbwolf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这篇文章中,我们将逐步介绍如何安装 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中国 荣誉推出

CRI-O 是 Kubernetes 的开源轻量级容器运行时。它是使用 开放容器组织 Open Container Initiative (OCI)兼容运行时的 Kubernetes 容器运行时接口 Container Runtime Interface (CRI)的实现。在运行 Kubernetes 时,它是 Docker 的完美替代品。

在本指南中,我们将逐步演示如何在 Ubuntu 22.04 LTS 上安装 CRI-O。

先决条件

在开始之前,这是你需要的:

  • 具有 SSH 访问权限的 Ubuntu 22.04 实例
  • 在实例上配置的 sudo 用户
  • 快速稳定的互联网连接

有了这个,让我们开始吧。

步骤 1:更新系统并安装依赖

立即登录你的服务器实例,并按如下方式更新包列表:

$ sudo apt update

更新本地包索引后,按如下方式安装依赖项:

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y

步骤 2:添加 CRI-O 存储库

要安装 CRI-O,我们需要在 Ubuntu 上添加或启用它的仓库。但首先,你需要根据操作系统和要安装的 CRI-O 版本定义变量。

因此,定义如下变量:

$ export OS=xUbuntu_22.04
$ export CRIO_VERSION=1.24

完成后,运行以下命令集以添加 CRI-O Kubic 仓库:

$ echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"| sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
$ echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list

此后,为 CRI-O 仓库导入 GPG 密钥:

$ curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS/Release.key | sudo apt-key add -
$ curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -

这会产生如下输出:

再次更新包索引,使系统与新添加的 CRI-O Kubic 仓库同步:

$ sudo apt update

步骤 3:在 Ubuntu 22.04 上安装 CRI-O

添加仓库后,使用 APT 包管理器安装 CRI-O 和运行时客户端:

$ sudo apt install cri-o cri-o-runc -y

安装后,启动并启用 CRI-O 守护程序:

$ sudo systemctl start crio
$ sudo systemctl enable crio

接下来,验证 CRI-O 服务是否正在运行:

$ sudo systemctl status crio

你应该看到以下输出,表明 CRI-O 服务正在按预期运行:

步骤 4:为 CRI-O 安装 CNI 插件

接下来,你需要安装 CNI( 容器网络接口 Container Network Interface )以及 CNI 插件。请记住,环回和桥接配置已启用并且足以使用 CRI-O 运行 容器荚 Pod

因此,要安装 CNI 插件,请运行以下命令:

$ sudo apt install containernetworking-plugins -y

安装后,编辑 CRI-O 配置文件:

$ sudo nano /etc/crio/crio.conf

取消注释 network_dirplugin_dirs 部分,并在 plugin_dirs 下添加 /usr/lib/cni/

保存更改并退出配置文件。

接下来,重启 CRIO 服务:

$ sudo systemctl restart crio

步骤 5:安装 CRI-O 工具

此外,你还需要安装 cri-tools 包,它提供了 crictl 命令行程序,用于交互和管理容器和 pod。

为此,请运行以下命令:

$ sudo apt install -y cri-tools

安装后,确认 crictl 的版本和 RunTimeVersion 如下:

$ sudo crictl --runtime-endpoint unix:///var/run/crio/crio.sock version

一定要检查 CRI-O 是否准备好使用以下命令部署容器荚:

$ sudo crictl info

crictl 命令提供自动补全功能,让你可以通过按 TAB 键自动补全命令。要启用命令补全,请运行以下命令:

$ sudo su -

# crictl completion > /etc/bash_completion.d/crictl

然后重新加载当前的 Bash 会话:

# source ~/.bashrc

要使用自动补全功能,你需要注销或启动新的终端会话。然后只需键入 crictl 命令并按 TAB 键即可查看所有选项。

$ crictl

步骤 6:使用 crictl 程序创建容器荚

至此,CRI-O 已完全安装和配置并准备好启动容器荚。在本节中,我们将在容器荚中创建一个 Apache Web 服务器并确认它是否正在处理请求。

首先,我们将使用容器荚配置文件设置一个沙箱或隔离环境,如下所示:

$ sudo nano apache_sandbox.json

然后我们将以下配置添加到文件中:

{
    "metadata": {
        "name": "apache-sandbox",
        "namespace": "default",
        "attempt": 1,
        "uid": "hdishd83djaidwnduwk28bcsb"
    },
    "linux": {
    },
    "log_directory": "/tmp"
}

保存并退出。接下来使用以下命令创建容器荚。这会打印出很长的字母数字,它是容器荚 ID。

$ sudo crictl runp apache_sandbox.json

要确认容器荚已创建,请运行命令:

$ sudo crictl pods

要检索有关创建的容器荚的更多信息,请运行以下命令:

$ sudo crictl inspectp --output table 05ba2f0704f22

这将打印出 ID、名称、UID、命名空间、创建日期、内部 IP 等详细信息。

步骤 7:在容器荚中创建容器

这部分中,我们将在容器荚中创建一个 Apache Web 服务器容器。因此,使用 crictl 程序从 Docker Hub 拉取 Apache Web 服务器镜像:

$ sudo crictl pull httpd

你可以如图所示验证拉取的镜像:

$ sudo crictl images

接下来,我们将为 Apache Web 服务器定义一个容器配置文件:

$ sudo nano container_apache.json

复制并粘贴以下代码:

{
  "metadata": {
      "name": "apache"
    },
  "image":{
      "image": "httpd"
    },
  "log_path":"apache.0.log",
  "linux": {
  }
}

保存并退出配置文件。

最后,要将容器连接到之前创建的沙盒容器荚,请运行以下命令:

$ sudo crictl create 05ba2f0704f22 container_apache.json apache_sandbox.json

这会向终端输出一长串字母数字 ID。请记下此 ID。

最后,使用 ID 启动 Apache Web 服务器容器,如下所示:

$ sudo crictl start 37f4d26510965452aa918f04d629f5332a1cd398d4912298c796942e22f964a7

要检查容器状态,请运行以下命令:

$ sudo crictl ps

要验证 Apache Web 服务器是否正在运行,请使用 curl 命令和容器荚的内部 ID 向 Web 服务器发送 HTTP 请求:

$ curl -I 10.85.0.2

以下输出确认 Web 服务器正在运行:

结论

这就是全部的指南。我们已经在 Ubuntu 22.04 上成功安装了 CRI-O,并继续创建容器荚和容器。欢迎你提出意见和反馈。


via: https://www.linuxtechi.com/install-crio-container-runtime-on-ubuntu/

作者:James Kiarie 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出