标签: google-kubernetes-engine

由于CPU不足,Pod处于挂起状态

在我的GCE Kubernetes集群上,我无法再创建pod.

Warning FailedScheduling    pod (www.caveconditions.com-f1be467e31c7b00bc983fbe5efdbb8eb-438ef) failed to fit in any node
fit failure on node (gke-prod-cluster-default-pool-b39c7f0c-c0ug): Insufficient CPU
Run Code Online (Sandbox Code Playgroud)

查看该节点的已分配统计信息

Non-terminated Pods:        (8 in total)
  Namespace         Name                                        CPU Requests    CPU Limits  Memory Requests Memory Limits
  ---------         ----                                        ------------    ----------  --------------- -------------
  default           dev.caveconditions.com-n80z8                            100m (10%)  0 (0%)      0 (0%)      0 (0%)
  default           lamp-cnmrc                                  100m (10%)  0 (0%)      0 (0%)      0 (0%)
  default           mongo-2-h59ly                                   200m (20%)  0 (0%)      0 (0%)      0 (0%)
  default           www.caveconditions.com-tl7pa                            100m (10%)  0 (0%)      0 (0%)      0 …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine

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

stackdriver日志记录如何断言条目的严重性?

我最近开始在我的Kubernetes集群上使用stackdriver日志记录.该服务正在记录json有效负载.在stackdriver日志记录中,我看到正确解析了json有效负载,但所有内容都具有严重性"ERROR".这不是预期的.大多数这些日志都不是错误.它们也不包含错误字段或类似字段.有没有办法告诉stackdriver如何确定从kubernetes中的日志代理收到的日志条目的严重性?或者我是否需要以某种方式修改结构化日志输出以使stackdriver更好地理解它?

提前致谢.

logging google-cloud-platform google-kubernetes-engine stackdriver

10
推荐指数
2
解决办法
883
查看次数

gRPC负载平衡

我已经阅读了https://github.com/grpc/grpc/blob/master/doc/load-balancing.md上的负载平衡页面,但仍然对后端GRPC之间正确的负载均衡方法感到困惑实例.我们正在部署多个gRPC"微服务"实例,并希望我们的其他gRPC客户端能够在它们之间进行路由.我们将这些作为pods部署在kubernetes(实际上是Google Container Engine)中.

任何人都可以解释在gRPC服务器之间加载平衡gRPC客户端请求的"推荐"方法吗?似乎客户需要了解端点 - 是否不可能利用Container Engine中的内置LoadBalancer来提供帮助?

kubernetes google-kubernetes-engine grpc grpc-java

10
推荐指数
3
解决办法
8127
查看次数

http - > Google Kubernetes引擎中的https重定向

我正在寻找重定向所有流量

http://example.com - > https://example.com就像几乎所有网站一样.

我看过这个链接没有成功: Kinersnetes在Google容器引擎中使用HTTPS Ingress

并在我的ingress.yaml文件中尝试了以下注释.

nginx.ingress.kubernetes.io/configuration-snippet: |
  if ($http_x_forwarded_proto != 'https') {
    return 301 https://$host$request_uri;
  }
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
kubernetes.io/ingress.allow-http: "false"
Run Code Online (Sandbox Code Playgroud)

一切都没有成功.为了清楚起见,我可以访问https://example.comhttp://example.com而没有任何错误,我需要http调用重定向到https.

谢谢

google-compute-engine google-cloud-platform kubernetes google-kubernetes-engine

10
推荐指数
4
解决办法
4826
查看次数

Helm 中的 Persistent Volumes & Claims & Replicas 推荐方法

我正在尝试了解 Persistent Volumes 和 Persistent Volume Claims 以及它应该如何在 Helm 中完成...

问题的TLDR版本是:如何在 helm 中创建 PVC,我可以将未来版本(无论是升级还是全新安装)附加到?

我目前的理解:

PV是一块物理存储的接口。PVC 是 pod 声称存在供自己使用的 PV 的方式。当 pod 被删除时,PVC 也被删除,但 PV 被维护 - 因此被持久化。但是,我如何再次使用它?

我知道可以动态配置 PV。以 Google Cloud 为例,如果您创建一个 PVC,它会自动为您创建一个 PV。

现在这是我坚持的部分......

我创建了一个 helm chart,它明确地创建了 PVC,因此有一个动态创建的 PV 作为发布的一部分。然后我稍后删除发布,这也将删除 PVC。云提供商将维护PV。在后续安装相同图表的新版本中...如何重用旧 PV?有没有办法真正做到这一点?

我确实找到了这个问题的答案......但是,这意味着您需要为您需要的每个 PVC 预先创建 PV,并且副本和自动缩放的重点是所有这些应该按需生成。

用例是 - 一如既往 - 适用于我希望我的数据被持久化的测试/开发环境,但我并不总是希望服务器运行。

先感谢您!我的大脑有点痛,因为我就是想不通……>.<

kubernetes google-kubernetes-engine kubernetes-helm

10
推荐指数
1
解决办法
3726
查看次数

Kafka 无法与 zookeeper 连接,并出现错误“超时等待连接状态:CONNECTING”

我正在尝试在 kubernetes pod 中运行我的 kafka 和 zookeeper。

这是我的zookeeper-service.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.1.0 (36652f6)
  creationTimestamp: null
  labels:
    io.kompose.service: zookeeper-svc
  name: zookeeper-svc
spec:
  ports:
  - name: "2181"
    port: 2181
    targetPort: 2181
  selector:
    io.kompose.service: zookeeper
status:
  loadBalancer: {}
Run Code Online (Sandbox Code Playgroud)

下边是 zookeeper-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.1.0 (36652f6)
  creationTimestamp: null
  labels:
    io.kompose.service: zookeeper
  name: zookeeper
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: zookeeper
    spec:
      containers:
      - …
Run Code Online (Sandbox Code Playgroud)

apache-kafka docker kubernetes google-kubernetes-engine apache-zookeeper

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

Google Cloud 构建条件步骤

这是我的云构建文件

substitutions:
    _CLOUDSDK_COMPUTE_ZONE: us-central1-a 
    _CLOUDSDK_CONTAINER_CLUSTER: $_CLOUDSDK_CONTAINER_CLUSTER
steps:
- name: gcr.io/$PROJECT_ID/sonar-scanner:latest
  args:
    - '-Dsonar.host.url=https://sonar.test.io'
    - '-Dsonar.login=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    - '-Dsonar.projectKey=test-service'
    - '-Dsonar.sources=.'
- id: 'build test-service image'
  name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA', '.']
- id: 'push test-service image'
  name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA']
- id: 'set test-service image in yamls'
  name: 'ubuntu'
  args: ['bash','-c','sed -i "s,TEST_SERVICE,gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA," k8s/*.yaml']
- id: kubectl-apply
  name: 'gcr.io/cloud-builders/kubectl'
  args: ['apply', '-f', 'k8s/']
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=${_CLOUDSDK_COMPUTE_ZONE}'
  - 'CLOUDSDK_CONTAINER_CLUSTER=${_CLOUDSDK_CONTAINER_CLUSTER}'
images: ['gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA']
Run Code Online (Sandbox Code Playgroud)

我想实施条件步骤。我的声纳步骤在哪里。

如果分支是生产,我必须跳过声纳步骤,如果有其他分支,则必须运行步骤。

我想Cloudbuild.yaml在所有分支机构中管理相同的内容。

当我合并分支时development > staging …

google-cloud-platform google-kubernetes-engine google-cloud-build

10
推荐指数
2
解决办法
5683
查看次数

GKE 元数据服务器如何在 Workload Identity 中工作

我最近一直在使用GKE Workload Identity功能。我有兴趣更详细地了解该gke-metadata-server组件的工作原理。

  1. GCP 客户端代码(gcloud或其他语言 SDK)适用于 GCE 元数据方法
  2. http://metadata.google.internal/path
  3. (猜测)GKE_METADATA_SERVER我的节点池上的设置将其配置为解析到该gke-metadata-server节点上的pod。
  4. (猜测)gke-metadata-server带有 --privileged 和主机网络的pod 可以确定源(pod IP?)然后查找 pod 及其服务帐户以检查iam.gke.io/gcp-service-account注释。
  5. (猜测)代理使用 pod 的“伪”身份集(例如[PROJECT_ID].svc.id.goog[[K8S_NAMESPACE]/[KSA_NAME]])调用元数据服务器,以获取在其 Kubernetes 服务帐户上注释的服务帐户的令牌。
  6. 如果此帐户对服务帐户具有令牌创建者/工作负载 ID 用户权限,则来自 GCP 的响应可能是成功的并且包含令牌,然后将令牌打包并设置回调用 Pod,以便对其他 Google API 进行身份验证调用。

我想现在对我来说主要的难题是验证调用 Pod 的身份。最初我认为这会使用 TokenReview API,但现在我不确定 Google 客户端工具如何知道使用安装到 pod 中的服务帐户令牌......

编辑后续问题:

Q1:在第 2 步和第 3 步之间,是否metadata.google.internal通过GKE_METADATA_SERVER节点池上的设置将请求路由到 GKE 元数据代理?

Q2:元数据服务器pod为什么需要主机联网?

问题 3:在此处的视频中:https : //youtu.be/s4NYEJDFc0M?t=2243假定 pod 进行 GCP …

google-cloud-platform kubernetes google-kubernetes-engine google-iam

10
推荐指数
1
解决办法
3413
查看次数

'OpenCvSharp.NativeMethods' 抛出异常。无法加载共享库“OpenCvSharpExtern”或其依赖项之一。,Ubuntu 18.04

在 Windows 环境中运行此应用程序时,我在我的 .net core 3.0 应用程序中使用了 OpenCvSharp 库,该应用程序运行没有任何问题。当在 ubuntu 18.04 中运行的 docker 中部署和托管相同的应用程序时,会发生以下异常:

System.DllNotFoundException: Unable to load shared library 'OpenCvSharpExtern' or one of its dependencies.
Run Code Online (Sandbox Code Playgroud)

我已经安装了在 ubuntu 环境中运行 OpenCvSharp4 所需的以下软件包 (nuget):

  • OpenCvSharp4
  • OpenCvSharp4.runtime.ubuntu.18.04-x64

使用以下命令检查 libOpenCvSharpExtern.so 库的依赖项时:

ldd libOpenCvSharpExtern.so
Run Code Online (Sandbox Code Playgroud)

缺少某些依赖项程序集,因此我安装了以下 GitHub 线程中提到的所有必需包,这些包报告了相同的确切问题:

https://github.com/shimat/opencvsharp/issues/889

但是仍然发现缺少一些依赖项,这些程序集名称如下:

  • libavcodec.so.57 => 未找到
  • libavformat.so.57 => 未找到
  • libavutil.so.55 => 未找到
  • libswscale.so.4 => 未找到
  • libjpeg.so.8 => 未找到

我还尝试安装以下软件包“libjpeg62-turbo-dev”和“libavcodec-extra57”来修复“未找到”程序集。但是问题还是出现了。

任何有关如何解决此问题的建议将不胜感激。

docker google-kubernetes-engine ubuntu-18.04 opencv4 asp.net-core-3.0

10
推荐指数
1
解决办法
1019
查看次数

如何在我的网络应用程序上安全地接受和运行用户的代码?

我正在开发一个基于 django 的 web 应用程序,它以 python 文件作为输入,其中包含一些函数,然后在后端我有一些列表作为参数通过用户函数传递,这将生成一个单值输出。生成的结果将是用于一些进一步的计算。

以下是用户文件中的函数的样子:

def somefunctionname(list):

    ''' some computation performed on list'''

    return float value
Run Code Online (Sandbox Code Playgroud)

目前我使用的方法是将用户的文件作为普通文件输入。然后在我的 views.py 中,我将文件作为模块执行并使用 eval 函数传递参数。下面给出了片段。

这里 modulename 是我从用户那里获取并作为模块导入的 python 文件名

exec("import "+modulename)

result = eval(f"{modulename}.{somefunctionname}(arguments)")
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好。但我知道这不是安全的方法。

我的问题,有没有其他方法可以安全地运行用户文件,因为我使用的方法不安全?我知道提议的解决方案不能完全证明,但是我可以运行它的其他方式是什么(例如,如果它可以通过 dockerization 解决,那么我可以使用 API 的方法或一些外部工具是什么)?或者如果可能的话,有人可以告诉我如何简单地沙盒这个或任何可以帮助我的教程..?

任何参考或资源都会有所帮助。

python django python-3.x docker google-kubernetes-engine

10
推荐指数
1
解决办法
1665
查看次数