如何在Kubernetes中更新服务?

背景: 假设我有一个带有一些pod的复制控制器。当这些吊舱首次部署时,它们被配置为公开端口8080。还创建了一个服务(LoadBalancer类型)以公开端口8080。稍后,我们决定从POD中导出一个额外的端口(端口8081)。我们改变了pod的定义,并在没有停机的情况下进行滚动更新,太棒了!但我们希望这个端口也可以公开访问 问题: 有没有一种好方法可以在不停机的情况下更新服务(例如,通过添加一个额外的端口来公开)?如果我这样做: kubectl replace -f my-service-wi

如何回滚Kubernetes状态集应用程序

目前,我正在将我们的一个微服务从K8S部署类型迁移到Statefulset。 在更新Kubernetes部署配置时,我注意到Statefulset不支持revisionHistoryLimit和minReadySeconds RevisionHistoryLimit用于保留前N个副本集以进行回滚。 minReadySeconds是pod在没有任何容器崩溃的情况下应准备就绪的秒数。 我找不到的任何兼容设置 因此,我的问题是: 1大师将等待多长时间考虑状态荚准备好了? 2如何处理有状态应用程序的回滚

Kubernetes k8s作业创建和k8s pod挂起之间的延迟

我非常快地将2000个短期作业发送到kube集群,我观察到在创建作业和开始等待作业的pod之间有几分钟的延迟。有人知道瓶颈是什么吗 etcd会成为瓶颈吗?从10.000英尺的高度来看,这个过程是: 每次安排pod/作业时,都会将其添加到队列中 调度器读取该队列并将POD分配给节点 当节点收到pod的分配时,它通过调用运行时并请求创建来处理创建 鉴于上述情况,延迟可能是: 等待节点可用(状态报告)以调度pod的调度程序 运行时调度节点中的吊舱 ETCD瓶颈也可能是一个问题,但可能性较小,如

Kubernetes 如何在k8s中错开pod创建

我有一个关于滚动部署的快速问题。我正在努力确保应用程序吊舱的创建是交错的。我查看了maxSurge和maxUnavailable,这似乎是控制滚动部署的唯一设置。这两种设置都以旧复制集的形式讨论pod创建。我想确保pod创建是交错的,即使当前没有运行部署 示例:如果我将maxSurge设置为1,将复制设置为5,那么在存在旧部署的情况下,滚动更新策略将做正确的事情,一次只启动一个pod,但是如果没有旧部署,所有5个吊舱将一起出现在一个新的部署中,这是我试图避免的。您所解释的是在没有现有部署的情况下

Kubernetes 无法使用Oracle cloud生成的默认配置文件登录

我已经用Oracle cloud为Kubernetes生成了一个配置文件,生成的文件不断抛出错误,没有足够的数据来创建auth info结构。 ,wat是解决此问题的方法 我已经创建了一个新的oracle云帐户,并使用quick setup为Kubernetes small(只有2个节点)设置了一个群集。当我将生成的配置文件上载到Kubernetes dashboard时,它会抛出一个错误:数据不足,无法创建auth info结构 apiVersion: v1 clusters: - clust

Kubernetes 如何使用Istio API密钥对服务进行授权?

我在istio上找到了关于如何创建API密钥的以下文档 但是我找不到任何关于如何使用这个东西来确保服务安全的文档或示例 有人能帮忙吗?Istio表示在服务网格中传播授权策略的配置。策略和遥测功能实际上基于以下资源的配置: -定义混音器和一些外部基础设施软件之间的适当通信方式 -介绍相关适配器提供的特定数据集的源数据集 -将特定处理程序绑定到实例,匹配规则表达式 您还可能会发现预定义的各个适配器,上面在源问题中提到的反映了通用的特定模板,但它没有描述任何授权策略实施过程 在上下文中,要利用API密

Kubernetes 当我尝试使用helm部署kube批处理时,以下错误是什么?

我在本地PC中下载了kube批处理。现在,当我尝试使用helm部署kube批处理时,我遇到以下错误: Error: customresourcedefinitions.apiextensions.k8s.io "podgroups.scheduling.incubator.k8s.io" already exists It appears after using the helm 如何修复此错误?将/src/github.com/hamikube/kube batch/deployment/

Kubernetes 节点在尝试加入具有'kubeadm'的群集时未获得证书`

我能够使用kubeadm为kubernetes部署引导主节点,但在kubeadm加入阶段kubelet开始阶段出现错误: 现在,通过journalctl-xeu kubelet查看kubelet日志: 有趣的是,在试图加入的worker上没有找到kubelet-client-current.pem,事实上/var/lib/kubelet/pki中唯一的文件是kubelet。{crt,key} 如果在尝试加入的节点上运行以下命令,则会发现缺少所有证书: # kubeadm alpha certs

Kubernetes okd/openshift集群如何同时被多个用户使用?

问题场景: OKD集群有两个集群管理员:User1和User2 如果User1使用ssh连接到集群并执行oc登录,则parallely User2使用新的ssh会话连接到同一集群并执行oc登录 现在,当User1检查ocwhoami时,结果将是User2,这是需要User1的。这将产生诸如User1 operationsex:Deployments与User2冲突之类的问题 如何消除这个问题,使两个用户可以并行使用集群 注意:User1和User2都配置了LDAP,这会造成问题吗 如何消除这个问

Kubernetes 替换头盔图表中标签的命令

我经常在helm图表中看到以下片段: labels: app: {{ template "app.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} 为什么需要更换?+符号是否不正确?根据本文档,标签的值不能有加号+字符 The name segment is required and must be 63 characters or less, beginning and e

Kubernetes 对于“超过63个字符”的指标,通过自定义指标stackdriver适配器进行水平Pod自动缩放失败

我有一个运行在Google Kubernetes引擎中的Kubernetes集群,我希望根据GCP发布/订阅的未完成消息数量来扩展部署。 我找到并遵循了涉及部署的 但是,由于在运行kubectl Descripte hpa时,我的订阅名称长度超过63个字符,因此我得到以下事件 Events: Type Reason Age From Message ----

Kubernetes 在k8s群集上运行的ansible的正确dockerfile

我有aks集群,我从基本映像(如nginx)为ansible创建了一个pod,并通过shell命令(pip3 install ansible、pip3 install openshift)手动安装shell中的所有内容。现在我需要创建一个带有必要更新的ansible映像,这是我的dockerfile。它在笔记本电脑上运行良好,但当我推回购并创建一个pod时,它会返回错误。也许有人能帮助我理解如何为ansible部署正确的映像。谢谢 Dockerfile: FROM ubuntu:16.04.

为什么Kubernetes HPA没有缩小(内存)?

总结 在我们的Kubernetes集群中,我们引入了具有内存和cpu限制的HPA。现在我们不明白为什么我们有一个服务的两个副本 该服务使用57%/85%的内存,并有2个副本,而不是一个副本。我们认为,这是因为当你总结两个豆荚的内存时,它超过了85%,但如果只有一个豆荚的话,情况就不会如此了。那么这是否阻止了它的规模缩小?我们能在这里做什么 在部署服务时,我们还观察到内存使用的峰值。我们正在aks azure中使用spring引导服务,并认为它可能会在那里扩展,而不会下降。我们是否错过了什么,或者

Kubernetes 当在特定工作节点上调度POD时,它总是失败。如何调试它?

我使用kubeadm安装了一个3节点的kubernetes群集。然而,当POD被安排在特定的kubernetes工作程序上时,它无法进行装载,有时会完全进入挂起状态。有人能建议如何调试这个吗 更新-: 工作程序的错误日志 Jun 24 19:14:19 kub-minion-1 kubelet[3268]: E0624 19:14:19.481535 3268 kubelet_volumes.go:154] orphaned pod "093642bc-5ef9-4c41-b9f

在kubernetes中使用稳定舵图安装cert manager后,无法对证书执行描述

我已根据使用舵安装了cert manager。安装后,我也可以使用入口获取证书。但在获得证书后,我无法描述,请删除以对证书或任何其他证书管理器资源执行任何其他选项。 我得到以下错误 kubectl describe certificate cert-name Error from server: conversion webhook for cert-manager.io/v1alpha2, Kind=Certificate failed: Post https://cert-manager-w

Kubernetes TLS路由的Istio加权路由

我们有两个微服务A和B。A通过istio代理侧车呼叫B 我们创建了一个虚拟服务。请参阅下面的yaml 创建虚拟服务后,当我们使用此命令检查pod A中的路由时,我们没有看到加权路由 如果我们用http替换tls,则会添加加权路由。我们可以在tls中使用加权路由吗 apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: b namespace: default spec: hosts:

Kubernetes 基本舵依赖澄清

为了简化本地开发/测试,我有一个伞形图,它部署了我的所有子图。这些应用程序使用资源(例如MongoDB、Kafka等),我想确保如果您要将伞形图安装到集群,它也会安装这些资源 为此,我有以下几点: apiVersion: v2 name: my-cool-project type: application version: 0.1.0 appVersion: 0.1.0 dependencies: - name: my-cool-app-1 repository: "fil

elasticsearch Elasticsearch日志rc和svc将自动删除

通过使用这些配置创建群集,群集将被自动删除 从解决办法是删除 kubernetes.io/cluster-service:true 虽然没有这些,elasticsearch无法通过kubernetes master获得 我是否应该创建一个拉取请求来删除repo文件中的行,这样人们就不会感到困惑?首先,我建议重新设置未来问题的格式,以便他们遵守堆栈溢出准则: 我建议让Elasticsearch成为一个普通的Kubernetes服务。可以通过以下方式之一公开: 1.设置service.Type=No

什么';是'的平均值;创建一个节点';在kubernetes api中

我在kubernetes文档中找到了api: 写操作 HTTP请求 POST/api/v1/nodes 查询参数 参数描述 漂亮如果为“true”,则输出相当打印。 身体参数 参数描述 身体 节点 回答 代码描述 200 节点OK 我测试这个api。使用此请求正文发送post请求: 答案是 { "kind": "Node", "apiVersion": "v1", "metadata": { "name": "10.110.17.48", "selfLink": "/api/v

Kubernetes 我怎样才能阻止库伯内特斯控制飞机吊舱?

只是好奇,对于mesos,我已经习惯了能够执行systemctl停止mesos master和systemctl启动mesos master(如果出于某种原因需要反弹它)。对于k8s,控制平面中有多个组件要“停止”,如apiserver、controller manager等 当使用kubeadm创建集群时,它将控制平面作为pod运行(没有副本集,或者类似的东西,可能是因为我目前只有一个主节点) 在控制平面上停止然后重新启动的最好方法是什么,在不拆除集群的情况下?Kubernetes集群将自身划

使用Rancher集装箱管理平台上的Kubernetes好吗?

如果不好,为什么 换言之,库伯内特斯与最初的库伯内特斯有什么不同?我认为将库伯内特斯与牧场主一起使用是一个好主意。我正在管理公司的牧场主实例,我们将从牲畜转移到Kubernetes,原因如下: 库伯内特斯 -现在广泛使用 -开源 -大公司支持其发展 -RANCHER 2.0将首先为KUBERNETES构建 如果你打算使用Rancher,我强烈建议你使用Kubernetes 你能提供一些关于你的用例的细节吗?可能是您计划使用它的应用程序的设计,以及您希望如何部署它的想法。否则,一般性的推荐问题往往

Kubernetes 在google云上使用helm客户端

你好,我想在谷歌云控制台上使用helm。 舵柄已经安装好了 我执行了以下步骤: wget https://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz 然后: 现在我可以在helm所在的文件夹中使用helm: ./helm init --client-only 但我只想输入helm来使用它。直接从cmd使用它需要什么。您需要将helm二进制文件所在的目录添加到$PATH。这样,下次调用helm时,

如何创建只访问kubernetes中特定命名空间的linux系统帐户?

在我的Linux服务器上,我有kubernetes集群。许多开发人员使用这个集群。 我想为只能访问特定kubernetes命名空间的用户创建Linux系统帐户 在主机中创建linux帐户 为帐户创建TLS证书 创建kubeconfig以使用TLS认证连接到apiserver。比如: 使用RBAC为用户提供适当的权限,如命名空间的完全权限: openssl genrsa -out ${account-name}-key.pem 2048 openssl req -new -sha256 -ke

kubernetes中的程序负载平衡

我有10个副本运行相同的Java应用程序。 我希望跳过向正在运行完整垃圾收集周期的复制副本发送请求/使用jvm工具接口停止world Cycleu 例:5个应用程序正在运行完整的GC循环, 5已完成GC循环。 因此,我想将流量路由到完成GC循环的POD PSEDOO代码: 1负载平衡器接收后端服务的传入REST请求。 2确定未处于完整GC周期的复制副本。 3使用循环路由将请求路由到步骤2中找到的复制副本中的1个 如果我们能在kubernetes做到这一点,有人能帮我吗。我有一个概念给你,但你需要

Kubernetes 牧场主环境与K8S集群之间的关系是什么?Rancher主机和K8S节点? Rancher使用最粗粒度的元素进行配置。 我们通常配置开发和产品环境。 将物理或虚拟主机添加到环境中。

牧场主对环境有很强的责任感。其中一个模板用于创建具有Kubernetes编排的环境 K8S具有带节点的集群。显然,当您按照K8S模板创建Rancher环境时,您建立了一个K8S集群 查看文档时,我无法清楚回答的问题: Rancher环境和K8S集群是一样的吗?对于使用K8S的环境。或者一个环境可以包含多个集群? Rancher主机和K8S节点是同一件事吗?同样,对于使用K8S的环境。 一个环境包含一组计算机主机/节点、一个作为4个选项之一的编排引擎kubernetes,以及一组具有不同角色的成员

如果我想在kubernetes中使用NodePort,如何知道节点中有哪个端口可用

我想在使用NodePort时指定端口,但如何知道所有节点上都有哪个端口可用,我不希望端口冲突 您可以使用 kubectl get svc-所有名称空间 然后您可以使用类型grep 在那里,您可以看到所有分配的端口。它是基本的管道和输出过滤 kubectl获取svc-all namespace | grep ClusterIP |而read-r(端口);;做回显$port;完成您可以获得所有服务、grep节点端口并查看结果 $ kubectl get services --all-namespac

Kubernetes 静态IP地址不可分配给Google云中的负载均衡器

我试图为我的Traefik ingress负载平衡器分配一个静态IP地址,但在谷歌云上总是得到相同的响应: Error creating load balancer (will retry): failed to ensure load balancer for service default/traefik-service: requested ip "35.185.139.44" is neither static nor assigned to the LB coffee:gke

为Kubernetes创建NFS侧车

我正在尝试为Kubernetes创建NFS侧车。目标是能够在不影响性能的情况下将NFS卷装载到现有pod。同时,我希望能够以只读方式将相同的NFS卷装载到另一个pod或服务器上,以便查看其中的内容。有人试过这个吗?有人有这个程序吗?我建议使用PersistentVolume,它使用NFS驱动程序和PersistentVolumeClaim,而不是使用侧车。如果使用RWX/ReadWriteMany访问模式,则可以将共享装载到多个POD中 例如,pv: 聚氯乙烯: 并安装在吊舱中: kind: P

Kubernetes 在GKE容器中的何处存储文件?

我很难理解在GKE容器中存储文件的位置?我已经看到了文件系统布局的以下文档: 但是,web上也有Dockerfile示例,它们将可执行文件复制到布局中未列出的其他路径,例如/usr或/go。其中一个例子如下: 另一个问题是:如果我有运行时代码,需要在容器启动后下载某些配置信息,那么我可以将配置文件写入与可执行文件相同的目录吗?或者我必须选择/etc或/tmp 最后,布局文档指出,/home和/var存储引导磁盘生命周期内的数据?这是什么意思?这与pod或节点的生存期相比如何?当您想在容器中存

根据初始连接将通信量定向到Kubernetes吊舱

我想将流量从Kubernetes中的负载平衡器定向到部署。但是,我希望每个连接都连接到一个特定的pod,并维护到该pod的连接,而不是试图在部署的所有pod之间实现均匀负载。我将把GRPC请求发送到pod上的一个有状态实例,客户端的GRPC请求不发送到其他pod是至关重要的 我当前的实现可能是不必要的复杂。以下是伪代码: 使用自定义python调度程序初始化集群。 创建了几个具有有状态应用程序的pod,每个pod都有一个节点端口服务和唯一的节点端口。 客户机使用套接字接口与python调度程序对

Kubernetes 请输入-ServiceAccount部署的用户名

当我尝试使用ServiceAccount部署时,即使我已经设置了ClusterRole绑定,也会得到请输入用户名-您知道为什么吗 库贝特尔: kubectl apply -f deployment.yaml 角色和绑定: kubectl create clusterrole tutorial-role \ --verb=get,list,watch,create,update,patch,delete \ --resource=dep

当第一个请求到达时,如何动态启动kubernetes吊舱?

假设我的应用程序中有多个端点,它们通过入口控制器公开为不同的Kubernetes服务 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: foo.bar.com http: paths: - path:

在采用OpenJDK OpenJ9的Kubernetes上拒绝JMX连接

与我的团队一起,我们正试图将我们的微服务转移到openj9,它们在kubernetes上运行。然而,我们在JMX的配置上遇到了一个问题。openjdk8-openj9 当我们尝试与jvisualvm建立连接并与Kubernetes进行端口转发时,连接被拒绝。 除了从Hotspot切换到OpenJ9之外,我们没有改变配置 错误: E0312 17:09:46.286374 17160 portforward.go:400] an error occurred forwarding 1099 -

kubernetes值文件复制值或创建引用/sym

Kubernetes值中是否可能引用同一文件中的值?我正在做一个for循环,大多数env变量都很好,但这一个依赖于其他一些val,需要在值内复制/引用它 image: repository: nginx tag: stable someCustomVal: - name: x value: xx - name: y value: yy - name: z value: {{ .Values.image.tag }} 顺便说一句,上述配置不起作用,但寻找等效的;我可以只在部

Kubernetes 关于GKE优化图像增强

我们试图为我们的集群强化gke优化图像gke-1.15.11。我们在节点实例中引入了一个ssh,并在/home/kubernetes/kubelet-config.yaml文件中进行了更改,然后运行kubebench来检查是否所有条件都已通过8个条件失败,而这些条件是我们在文件中更改的确切条件。但是,随后我们在/etc/default/kubernetes中对参数进行了精确的更改,并再次运行kubebench,直到条件通过。但是,当我们重新启动实例时,我们看到了在/ect/default/kub

更新pod定义以定义现有kubernetes部署上的准备就绪探测

我已经创建了一个Kubernetes部署,其POD由模板定义。我需要更新pod定义,以包含就绪性和活跃性探测,因为据我所知,模板不允许创建这些探测。有什么想法吗 部署的问题是它不允许我添加探测定义。如果使用如下所示的探测定义: apiVersion: apps/v1 kind: Deployment metadata: name: <appdeployment> labels: app: <appname> spec: replicas: 3 se

Kubernetes 使用google auth保护普罗米修斯

作为anthos服务网安装的一部分,我包括grafana和prometheus, 我能够使用grafana.ini文件中的google.auth确保对grafana的访问。 还有什么方法可以让我安全地接近普罗米修斯吗 谢谢最常用的是oauth2\u代理,尽管有很多选项。最常用的是oauth2\u代理,尽管有很多选项。您是否有任何关于如何实现oauth2\u代理的文档,并且您知道当您将普罗米修斯作为anthos服务网格的一部分时,它是否适用,感谢您将它作为一个侧车运行,而不是直接公开普罗米修斯,而

一次在Kubernetes中创建多个持久卷?

我们可以通过CSI一次创建多个持久卷吗?基本上,存储支持从源创建的克隆数。我想看看是否可以通过CSI利用这一点,这样我只需调用一次就可以创建10个克隆。您可以使用它按需创建PV。假设我在存储类对象中添加一个字段“numberOfClones”,并使用它动态创建pvc。我将在CSI CreateVolume方法中获取字段“numberOfClones”。存储可以创建10个克隆并返回。但是K8s将如何将10个卷ID连接到pvc/pv?动态资源调配不需要“NumberOfClone”。所以不要使用它,

如何设置Kubernetes事件的TTL?

我有一个新的服务,它发出的事件太多,以至于etcd空间不足。这些是删除后1小时,但我希望他们被删除得更快。有没有办法在每个事件上设置TTL?有一个标志用于: -事件ttl持续时间默认值:1h0m0s 保留事件的时间量 您可以使用Kubernetes cronjob删除这些。

Kubernetes Docker Image和it';库伯内特斯豆荚不同

我修改了Docker图像中的内容并运行了Kubernetes吊舱。然而,Kubernetes吊舱的内容是旧版本的Docker图像,而不是修改后的图像 怎么可能呢 我猜K8s worker节点正在尝试从本地获取尽可能多的层,而从docker注册表获取的层很少。 如何解决此问题,使K8s工作节点每次仅从注册表中提取docker映像的所有层?将imagePullPolicy设置为始终 样本: apiVersion:v1 种类:豆荚 元数据: 名称:demo 规格: 容器: -名称:图像名称 图像:我的

Kubernetes 如何处理apiservice中的种类冲突

我有两个证书类型的API服务:cert-manager.io和certmanager.k8s.io。当我使用kubectl get certificate-all命名空间时,它会说找不到资源,因为它似乎正在检查certmanager.k8s.io,但我的证书是在cert-manager.io下创建的 我不需要certmanager.k8s.io,所以我尝试删除它,但它不会删除,即使它报告它已被删除 kubectl delete apiservice v1alpha1.certmanager.k8

如何更改kubernetes中的默认kube调度程序

说明如何运行多个计划程序。但我无法理解默认调度程序是如何决定的?它是否基于-领导人选举选项 我可以告诉Kubernetes使用我的自定义计划程序作为默认计划程序而不是kube计划程序吗? 除了Pod/Deployment规范中的schedulerName之外,还有其他方法指定调度器吗 如何确定默认调度程序?它是基于领导人选举吗 选择权 不,它不是基于-leader elect,即在启用leader election的情况下运行同一计划程序的多个复制副本,以便在任何给定时间点只有一个副本充当lea

Kubernetes 获取头盔依赖项的详细信息

我看一下这个帮助需求: dependencies: - name: postgresql version: 8.6.2 repository: https://kubernetes-charts.storage.googleapis.com/ condition: postgresql.installdep.enable 资料来源: 第八届博士后非常非常老。我猜这个版本只是一些软件包的版本 但是我怎样才能得到更多关于这个包裹的信息呢 我看。但这个URL似乎是为机器人

Kubernetes 节点具有卷节点关联冲突

我有一个pod,它使用2个持久卷。持久卷位于不同的区域中。部署时,我遇到以下错误: node(s) had volume node affinity conflict 以上问题有什么解决办法吗 我有一个pod,它使用2个持久卷。持久卷位于不同的区域中 Pod装载的卷必须位于同一可用性区域中,以便可以将它们装载到Pod计划所在的节点上 您还可以通过将StorageClass设置为regionalpd StorageClass来使用,但这样做成本更高、速度更慢,并且会使卷镜像到两个区域中。但这有点

Kubernetes 错误:src或dest之一必须是远程文件规范

我正试图通过以下命令将本地文件夹移动到kubernetes卷中: kubectl cp /* mynamespace/mypod-xxxx-xxxx:/var/www/my-content 不幸的是,我收到了以下错误消息: 错误:src或dest之一必须是远程文件规范 就连我也将卷装载配置如下: volumeMounts: - mountPath: "/var/www/my-content" name: mycontent

Kubernetes 在重新配置StorageClass后,是否必须重新创建已绑定的PersistentVolumes

我在AKS中的“azure文件”存储类上通过PersistentColumeClaims创建了几个PersistenVolume。现在,Azure提供的StorageClass的装载选项不符合我们的需要,我必须使用不同的装载选项对其进行更新/重新配置 我现在必须手动销毁绑定的PersistentVolumes以强制重新创建和重新配置(不同的装载),还是由供应器负责 最好的办法是什么 是否删除PersistentVolume本身 删除索赔 删除卷绑定的位置(我想不是) 是否删除并重新创建整个状态

如何在Kubernetes中删除服务

我执行了这个命令:$kubectl get services-n demo1 它返回了这个服务列表 服务清单 请告诉我如何删除此服务要在命名空间demo1中删除您的服务我的服务,您可以运行: kubectl delete services my-service -n demo1 非常感谢@norbjd