在我的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集群上使用stackdriver日志记录.该服务正在记录json有效负载.在stackdriver日志记录中,我看到正确解析了json有效负载,但所有内容都具有严重性"ERROR".这不是预期的.大多数这些日志都不是错误.它们也不包含错误字段或类似字段.有没有办法告诉stackdriver如何确定从kubernetes中的日志代理收到的日志条目的严重性?或者我是否需要以某种方式修改结构化日志输出以使stackdriver更好地理解它?
提前致谢.
logging google-cloud-platform google-kubernetes-engine stackdriver
我已经阅读了https://github.com/grpc/grpc/blob/master/doc/load-balancing.md上的负载平衡页面,但仍然对后端GRPC之间正确的负载均衡方法感到困惑实例.我们正在部署多个gRPC"微服务"实例,并希望我们的其他gRPC客户端能够在它们之间进行路由.我们将这些作为pods部署在kubernetes(实际上是Google Container Engine)中.
任何人都可以解释在gRPC服务器之间加载平衡gRPC客户端请求的"推荐"方法吗?似乎客户需要了解端点 - 是否不可能利用Container Engine中的内置LoadBalancer来提供帮助?
我正在寻找重定向所有流量
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.com和 http://example.com而没有任何错误,我需要http调用重定向到https.
谢谢
google-compute-engine google-cloud-platform kubernetes google-kubernetes-engine
我正在尝试了解 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 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
这是我的云构建文件
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
我最近一直在使用GKE Workload Identity功能。我有兴趣更详细地了解该gke-metadata-server组件的工作原理。
gcloud或其他语言 SDK)适用于 GCE 元数据方法http://metadata.google.internal/pathGKE_METADATA_SERVER我的节点池上的设置将其配置为解析到该gke-metadata-server节点上的pod。gke-metadata-server带有 --privileged 和主机网络的pod 可以确定源(pod IP?)然后查找 pod 及其服务帐户以检查iam.gke.io/gcp-service-account注释。[PROJECT_ID].svc.id.goog[[K8S_NAMESPACE]/[KSA_NAME]])调用元数据服务器,以获取在其 Kubernetes 服务帐户上注释的服务帐户的令牌。我想现在对我来说主要的难题是验证调用 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
在 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):
使用以下命令检查 libOpenCvSharpExtern.so 库的依赖项时:
ldd libOpenCvSharpExtern.so
Run Code Online (Sandbox Code Playgroud)
缺少某些依赖项程序集,因此我安装了以下 GitHub 线程中提到的所有必需包,这些包报告了相同的确切问题:
https://github.com/shimat/opencvsharp/issues/889
但是仍然发现缺少一些依赖项,这些程序集名称如下:
我还尝试安装以下软件包“libjpeg62-turbo-dev”和“libavcodec-extra57”来修复“未找到”程序集。但是问题还是出现了。
任何有关如何解决此问题的建议将不胜感激。
docker google-kubernetes-engine ubuntu-18.04 opencv4 asp.net-core-3.0
我正在开发一个基于 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 的方法或一些外部工具是什么)?或者如果可能的话,有人可以告诉我如何简单地沙盒这个或任何可以帮助我的教程..?
任何参考或资源都会有所帮助。
kubernetes ×6
docker ×3
apache-kafka ×1
django ×1
google-iam ×1
grpc ×1
grpc-java ×1
logging ×1
opencv4 ×1
python ×1
python-3.x ×1
stackdriver ×1
ubuntu-18.04 ×1