标签: kubernetes

Prometheus - Kubernetes 中角色端点和角色 pod 的服务发现用例

在阅读 Prometheus 配置文档和一些示例抓取配置时,我发现了一些带有 role service& role endpoints& role的 kubernetes_sd_configspod

- job_name: kube-state-metrics
  kubernetes_sd_configs:
  - role: endpoints
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)
  - action: keep
    regex: prometheus;kube-state-metrics
    source_labels:
    - __meta_kubernetes_namespace
    - __meta_kubernetes_pod_label_component
Run Code Online (Sandbox Code Playgroud)
- honor_labels: true
  job_name: prometheus-pushgateway
  kubernetes_sd_configs:
  - role: service
  relabel_configs:
  - action: keep
    regex: pushgateway
    source_labels:
    - __meta_kubernetes_service_annotation_prometheus_io_probe
Run Code Online (Sandbox Code Playgroud)
- job_name: node-exporter
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_pod_label_(.+)
  - action: replace
    regex: ([^:]+)(?::\d+)?;(\d+)
    replacement: $1:$2
    source_labels:
    - __address__
    - __meta_kubernetes_pod_container_port_number …
Run Code Online (Sandbox Code Playgroud)

kubernetes prometheus

5
推荐指数
1
解决办法
5377
查看次数

Kubernetes主节点的硬件要求是什么

我们正在尝试设置一个包含 25 个工作节点和 1 个主节点的集群。在此之前,我们需要选择硬件,尤其是主节点。

如何估算我们需要的硬件资源?主节点的硬件要求与集群的大小有关吗?我们可以遵循官方硬件推荐或资源规则之类的东西吗?

deployment docker kubernetes

5
推荐指数
1
解决办法
9628
查看次数

使用 kubectl 连接到远程 minikube 集群

我想看看是否可以使用本地(Mac)kubectl 连接到远程 minikube 集群(Ubuntu 盒子)。我目前使用 Docker,并且可以使用docker-machine. 只需评估机器名称,docker 就会使用远程机器。

我想知道 minikube/kubectl 是否有类似的东西?我发现一些文章提到我需要将远程~/.minikube目录复制到本地,并更改一些配置。但这对于像这样的工具docker-machine无缝完成的事情来说似乎相当复杂。

是否有类似的工具可用,或者如果没有,有人可以帮助我完成连接到远程集群所需的步骤吗?

远程机器 目前我使用docker驱动程序(这是命令的完整输出,只有一行):

$ minikube config view
- driver: docker
Run Code Online (Sandbox Code Playgroud)

并拥有多项NodePort服务:

$ kubectl get service -A
NAMESPACE     NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       apigateway        NodePort    10.100.122.255   <none>        8080:30601/TCP           19h
default       discoveryserver   NodePort    10.101.106.231   <none>        8761:30602/TCP           19h
default       elasticsearch     NodePort    10.97.197.14     <none>        9200:30604/TCP           19h
default       harness           NodePort    10.97.233.245    <none>        9090:30603/TCP           19h
default       kubernetes        ClusterIP   10.96.0.1        <none>        443/TCP                  19h
default …
Run Code Online (Sandbox Code Playgroud)

remote-access docker kubernetes minikube

5
推荐指数
1
解决办法
6037
查看次数

跨多个/所有 Kubernetes 命名空间删除资源类型的所有实例

我正在尝试在 Kubernetes 集群上卸载并重新安装 cert-manager。他们的卸载文档提到:

在继续之前,请确保用户创建的所有 cert-manager 资源均已删除。您可以使用以下命令检查任何现有资源:

$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces

该命令输出数百个资源,分布在二十几个命名空间中。

如何有效地删除它们,而不删除命名空间中的其他任何内容?

kubectl delete命令在删除所有特定类型时需要指定命名空间,如下所示:kubectl delete certificates -n example-ns,所以这在这里不好。

在指定的同时按名称删除每个循环-A也不起作用,因为我需要指定名称空间:

$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Run Code Online (Sandbox Code Playgroud)

这里正确的 cli 魔法是什么?

kubernetes google-kubernetes-engine cert-manager kubectl

5
推荐指数
1
解决办法
6232
查看次数

Minikube 在 minikube 启动时挂载 datadir

所以我实际上想启动我的 minikube 集群,并在 /data 上安装一个特殊目录。该目录包含我的数据库数据。

为此我尝试:

minikube start \
--driver=docker \
--extra-config=apiserver.service-node-port-range=1-35000 \
--disk-size=5000mb \
--mount \
--mount-string="${PWD}/srcs/mysql/datas:/data"
Run Code Online (Sandbox Code Playgroud)

实际上选项--mount似乎--mount-string="${PWD}/srcs/mysql/datas:/data"不起作用。没有显示警告或错误输出,但是当我连接到计算机并将文件列表到 /data 时,什么也没有出现。我的目录没有挂载。

如果我使用以下命令挂载目录:minikube mount ${PWD}/srcs/mysql/datas:/data它可以工作,并且我可以在 /data 中列出我的数据。(但我真的想在启动时启动它,现在我做错了什么)。

kubernetes minikube

5
推荐指数
1
解决办法
3264
查看次数

无法通过 minikube ip 连接到 minikube ingress

所以在 docker-desktop 到处出现问题后,我才开始深入研究 minikube。我正在关注https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/,但我遇到了问题。

我完全按照教程的说明进行了操作:

  1. 在 minikube 中启用入口插件(顺便问一下,这也适用于通过 helm 安装的自行部署的入口控制器吗?)
  2. 部署了一个应用程序
  3. 创建了对应的Ingress配置

我验证了所有内容都可用,并最终得到以下输出kubectl get ingress

NAME              CLASS    HOSTS              ADDRESS        PORTS   AGE
example-ingress   <none>   hello-world.info   192.168.49.2   80      87m
Run Code Online (Sandbox Code Playgroud)

然而,当尝试访问 hello-world.info(无论是在我的主机文件中设置,还是直接访问 192.168.49.2,仅用于连接测试)时,除了请求超时之外,我什么也得不到。我的入口控制器的日志也没有提及任何失败的连接尝试。

通过 手动启动隧道时,连接工作正常minikube service ingress-nginx-controller-admission --namespace=kube-system

这是输出minikube profile list

|----------|-----------|---------|--------------|------|---------|---------|-------|
| Profile  | VM Driver | Runtime |      IP      | Port | Version | Status  | Nodes |
|----------|-----------|---------|--------------|------|---------|---------|-------|
| minikube | docker    | docker  | 192.168.49.2 | 8443 | v1.20.2 | Running …
Run Code Online (Sandbox Code Playgroud)

docker kubernetes minikube

5
推荐指数
1
解决办法
1万
查看次数

k8s nginx ingress 在加载时随机返回 502 错误

我们在 k8s 集群 (v.1.17) 上使用 nginx (1.15.8.1) 作为入口控制器,由 rancher (2.5.7) 管理。

到目前为止,这工作得很好,但现在我们设置了一个自定义 API pod,可以通过 ingress 从外部访问。

现在,通过每秒在 API 上触发请求来对 API 进行一些负载测试,每两个请求随机返回“502 Bad Gateway”。但不是定期的。

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>openresty/1.15.8.1</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

各自登录入口控制器:

2021/04/11 11:02:48 [error] 25430#25430: *55805583 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: xxx, server: xxx, request: "POST /api/v1/xxx HTTP/2.0", upstream: "http://xxx/api/v1/xxx", host: "xxx"
Run Code Online (Sandbox Code Playgroud)

我们在非 K8s 环境中运行与 docker 容器完全相同的容器,之前我们从未遇到过这个问题,所以目前我认为这不是容器/API 实现的问题。

我的想法是:

1- 抽象 API pod 的服务定义无法将流量路由到 pod,因此会回复 502

-> …

bad-request kubernetes rancher-2 nginx-ingress

5
推荐指数
1
解决办法
1万
查看次数

EKS ARM 节点陷入未就绪状态 - 运行时网络未就绪 cni 配置未初始化

我有一个名为cluster-main的 EKS 集群 (AWS)正在运行

  • 库伯内特版本: 1.16
  • 平台版本: eks.4
  • CNI版本v1.6.1

集群中有两个节点组

集群名称 实例类型 AMI类型
通用节点组 t3a.中 AL2_x86_64
内存节点组 r5a.大号 AL2_x86_64

这些组中的节点工作正常。

我正在尝试添加一个由 ARM 实例组成的新节点组

集群名称 实例类型 AMI类型
cpu 节点组 c6g.xlarge AL2_ARM_64

但由于以下问题,该组的节点陷入Not Ready状态,无法创建节点组

Conditions:

类型 地位 最后心跳时间 最后转换时间 原因 信息
准备好 错误的 2021 年 5 月 31 日星期一 08:40:22 -0400 2021 年 5 月 31 日星期一 08:38:21 -0400 Kubelet未就绪 运行时网络未准备好:NetworkReady=false 原因:NetworkPluginNotReady 消息:docker:网络插件未准备好:cni 配置未初始化
  • 所有节点组都有节点 IAM 角色 ARN
  • 所有节点组都是 AWS 托管组。
  • 所有节点组都部署在两个特定子网(私有)下

当我通过 SSH 连接到 EC2 …

amazon-web-services kubernetes amazon-eks

5
推荐指数
1
解决办法
4789
查看次数

我可以在 Pod 中并行运行多个线程,并将 CPU 限制设置为 500 毫核吗?

我有一个多核 Kubernetes 集群,其中有多个 Pod,配置的 CPU 限制为 500 毫核:

        resources:
          limits:
            cpu: "500m"
Run Code Online (Sandbox Code Playgroud)

在单个 Pod 中是否可以有多个线程并行运行(同时,在同一时刻)?

根据我的理解,当限制小于 1000 毫核时,pod 永远不可能有多个线程并行运行。这是对的吗?

threads multi-threading cpu-usage kubernetes

5
推荐指数
2
解决办法
2万
查看次数

Kubernetes:如何获取哪个 pod 调度 GPU?

我的集群中有 3 个 Nvidia GPU,并且集群中运行着很多 pod。如何找到这些 Pod 中的哪一个调度 GPU 以及它们调度了多少个 GPU?

我使用此链接在集群中启用 Nvidia GPU 的 GPU 调度。 https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/

谢谢

kubernetes gpu

5
推荐指数
1
解决办法
2050
查看次数