在阅读 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) 我们正在尝试设置一个包含 25 个工作节点和 1 个主节点的集群。在此之前,我们需要选择硬件,尤其是主节点。
如何估算我们需要的硬件资源?主节点的硬件要求与集群的大小有关吗?我们可以遵循官方硬件推荐或资源规则之类的东西吗?
我想看看是否可以使用本地(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) 我正在尝试在 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 魔法是什么?
所以我实际上想启动我的 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 中列出我的数据。(但我真的想在启动时启动它,现在我做错了什么)。
所以在 docker-desktop 到处出现问题后,我才开始深入研究 minikube。我正在关注https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/,但我遇到了问题。
我完全按照教程的说明进行了操作:
我验证了所有内容都可用,并最终得到以下输出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) 我们在 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
-> …
我有一个名为cluster-main的 EKS 集群 (AWS)正在运行
集群中有两个节点组
| 集群名称 | 实例类型 | 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 配置未初始化 |
当我通过 SSH 连接到 EC2 …
我有一个多核 Kubernetes 集群,其中有多个 Pod,配置的 CPU 限制为 500 毫核:
resources:
limits:
cpu: "500m"
Run Code Online (Sandbox Code Playgroud)
在单个 Pod 中是否可以有多个线程并行运行(同时,在同一时刻)?
根据我的理解,当限制小于 1000 毫核时,pod 永远不可能有多个线程并行运行。这是对的吗?
我的集群中有 3 个 Nvidia GPU,并且集群中运行着很多 pod。如何找到这些 Pod 中的哪一个调度 GPU 以及它们调度了多少个 GPU?
我使用此链接在集群中启用 Nvidia GPU 的 GPU 调度。 https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/
谢谢
kubernetes ×10
docker ×3
minikube ×3
amazon-eks ×1
bad-request ×1
cert-manager ×1
cpu-usage ×1
deployment ×1
gpu ×1
kubectl ×1
prometheus ×1
rancher-2 ×1
threads ×1