背景:
假设我有一个带有一些pod的复制控制器。当这些吊舱首次部署时,它们被配置为公开端口8080。还创建了一个服务(LoadBalancer类型)以公开端口8080。稍后,我们决定从POD中导出一个额外的端口(端口8081)。我们改变了pod的定义,并在没有停机的情况下进行滚动更新,太棒了!但我们希望这个端口也可以公开访问
问题:
有没有一种好方法可以在不停机的情况下更新服务(例如,通过添加一个额外的端口来公开)?如果我这样做:
kubectl replace -f my-service-wi
目前,我正在将我们的一个微服务从K8S部署类型迁移到Statefulset。
在更新Kubernetes部署配置时,我注意到Statefulset不支持revisionHistoryLimit和minReadySeconds
RevisionHistoryLimit用于保留前N个副本集以进行回滚。
minReadySeconds是pod在没有任何容器崩溃的情况下应准备就绪的秒数。
我找不到的任何兼容设置
因此,我的问题是:
1大师将等待多长时间考虑状态荚准备好了?
2如何处理有状态应用程序的回滚
我非常快地将2000个短期作业发送到kube集群,我观察到在创建作业和开始等待作业的pod之间有几分钟的延迟。有人知道瓶颈是什么吗
etcd会成为瓶颈吗?从10.000英尺的高度来看,这个过程是:
每次安排pod/作业时,都会将其添加到队列中
调度器读取该队列并将POD分配给节点
当节点收到pod的分配时,它通过调用运行时并请求创建来处理创建
鉴于上述情况,延迟可能是:
等待节点可用(状态报告)以调度pod的调度程序
运行时调度节点中的吊舱
ETCD瓶颈也可能是一个问题,但可能性较小,如
我有一个关于滚动部署的快速问题。我正在努力确保应用程序吊舱的创建是交错的。我查看了maxSurge和maxUnavailable,这似乎是控制滚动部署的唯一设置。这两种设置都以旧复制集的形式讨论pod创建。我想确保pod创建是交错的,即使当前没有运行部署
示例:如果我将maxSurge设置为1,将复制设置为5,那么在存在旧部署的情况下,滚动更新策略将做正确的事情,一次只启动一个pod,但是如果没有旧部署,所有5个吊舱将一起出现在一个新的部署中,这是我试图避免的。您所解释的是在没有现有部署的情况下
我已经用Oracle cloud为Kubernetes生成了一个配置文件,生成的文件不断抛出错误,没有足够的数据来创建auth info结构。
,wat是解决此问题的方法
我已经创建了一个新的oracle云帐户,并使用quick setup为Kubernetes small(只有2个节点)设置了一个群集。当我将生成的配置文件上载到Kubernetes dashboard时,它会抛出一个错误:数据不足,无法创建auth info结构
apiVersion: v1
clusters:
- clust
我在istio上找到了关于如何创建API密钥的以下文档
但是我找不到任何关于如何使用这个东西来确保服务安全的文档或示例
有人能帮忙吗?Istio表示在服务网格中传播授权策略的配置。策略和遥测功能实际上基于以下资源的配置:
-定义混音器和一些外部基础设施软件之间的适当通信方式
-介绍相关适配器提供的特定数据集的源数据集
-将特定处理程序绑定到实例,匹配规则表达式
您还可能会发现预定义的各个适配器,上面在源问题中提到的反映了通用的特定模板,但它没有描述任何授权策略实施过程
在上下文中,要利用API密
我在本地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/
我能够使用kubeadm为kubernetes部署引导主节点,但在kubeadm加入阶段kubelet开始阶段出现错误:
现在,通过journalctl-xeu kubelet查看kubelet日志:
有趣的是,在试图加入的worker上没有找到kubelet-client-current.pem,事实上/var/lib/kubelet/pki中唯一的文件是kubelet。{crt,key}
如果在尝试加入的节点上运行以下命令,则会发现缺少所有证书:
# kubeadm alpha certs
问题场景:
OKD集群有两个集群管理员:User1和User2
如果User1使用ssh连接到集群并执行oc登录,则parallely User2使用新的ssh会话连接到同一集群并执行oc登录
现在,当User1检查ocwhoami时,结果将是User2,这是需要User1的。这将产生诸如User1 operationsex:Deployments与User2冲突之类的问题
如何消除这个问题,使两个用户可以并行使用集群
注意:User1和User2都配置了LDAP,这会造成问题吗
如何消除这个问
标签: Kubernetes
kubernetes-helmgo-templateshelmfile
我经常在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
我有一个运行在Google Kubernetes引擎中的Kubernetes集群,我希望根据GCP发布/订阅的未完成消息数量来扩展部署。
我找到并遵循了涉及部署的
但是,由于在运行kubectl Descripte hpa时,我的订阅名称长度超过63个字符,因此我得到以下事件
Events:
Type Reason Age From Message
----
我有aks集群,我从基本映像(如nginx)为ansible创建了一个pod,并通过shell命令(pip3 install ansible、pip3 install openshift)手动安装shell中的所有内容。现在我需要创建一个带有必要更新的ansible映像,这是我的dockerfile。它在笔记本电脑上运行良好,但当我推回购并创建一个pod时,它会返回错误。也许有人能帮助我理解如何为ansible部署正确的映像。谢谢
Dockerfile:
FROM ubuntu:16.04.
总结
在我们的Kubernetes集群中,我们引入了具有内存和cpu限制的HPA。现在我们不明白为什么我们有一个服务的两个副本
该服务使用57%/85%的内存,并有2个副本,而不是一个副本。我们认为,这是因为当你总结两个豆荚的内存时,它超过了85%,但如果只有一个豆荚的话,情况就不会如此了。那么这是否阻止了它的规模缩小?我们能在这里做什么
在部署服务时,我们还观察到内存使用的峰值。我们正在aks azure中使用spring引导服务,并认为它可能会在那里扩展,而不会下降。我们是否错过了什么,或者
我使用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
kubernetes-ingressnginx-ingresscert-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
我们有两个微服务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:
为了简化本地开发/测试,我有一个伞形图,它部署了我的所有子图。这些应用程序使用资源(例如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
通过使用这些配置创建群集,群集将被自动删除
从解决办法是删除
kubernetes.io/cluster-service:true
虽然没有这些,elasticsearch无法通过kubernetes master获得
我是否应该创建一个拉取请求来删除repo文件中的行,这样人们就不会感到困惑?首先,我建议重新设置未来问题的格式,以便他们遵守堆栈溢出准则:
我建议让Elasticsearch成为一个普通的Kubernetes服务。可以通过以下方式之一公开:
1.设置service.Type=No
我在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
只是好奇,对于mesos,我已经习惯了能够执行systemctl停止mesos master和systemctl启动mesos master(如果出于某种原因需要反弹它)。对于k8s,控制平面中有多个组件要“停止”,如apiserver、controller manager等
当使用kubeadm创建集群时,它将控制平面作为pod运行(没有副本集,或者类似的东西,可能是因为我目前只有一个主节点)
在控制平面上停止然后重新启动的最好方法是什么,在不拆除集群的情况下?Kubernetes集群将自身划
如果不好,为什么
换言之,库伯内特斯与最初的库伯内特斯有什么不同?我认为将库伯内特斯与牧场主一起使用是一个好主意。我正在管理公司的牧场主实例,我们将从牲畜转移到Kubernetes,原因如下:
库伯内特斯
-现在广泛使用
-开源
-大公司支持其发展
-RANCHER 2.0将首先为KUBERNETES构建
如果你打算使用Rancher,我强烈建议你使用Kubernetes 你能提供一些关于你的用例的细节吗?可能是您计划使用它的应用程序的设计,以及您希望如何部署它的想法。否则,一般性的推荐问题往往
标签: Kubernetes
google-kubernetes-enginekubernetes-helmgoogle-cloud-console
你好,我想在谷歌云控制台上使用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时,
在我的Linux服务器上,我有kubernetes集群。许多开发人员使用这个集群。
我想为只能访问特定kubernetes命名空间的用户创建Linux系统帐户
在主机中创建linux帐户
为帐户创建TLS证书
创建kubeconfig以使用TLS认证连接到apiserver。比如:
使用RBAC为用户提供适当的权限,如命名空间的完全权限:
openssl genrsa -out ${account-name}-key.pem 2048
openssl req -new -sha256 -ke
我有10个副本运行相同的Java应用程序。
我希望跳过向正在运行完整垃圾收集周期的复制副本发送请求/使用jvm工具接口停止world Cycleu
例:5个应用程序正在运行完整的GC循环,
5已完成GC循环。
因此,我想将流量路由到完成GC循环的POD
PSEDOO代码:
1负载平衡器接收后端服务的传入REST请求。
2确定未处于完整GC周期的复制副本。
3使用循环路由将请求路由到步骤2中找到的复制副本中的1个
如果我们能在kubernetes做到这一点,有人能帮我吗。我有一个概念给你,但你需要
牧场主对环境有很强的责任感。其中一个模板用于创建具有Kubernetes编排的环境
K8S具有带节点的集群。显然,当您按照K8S模板创建Rancher环境时,您建立了一个K8S集群
查看文档时,我无法清楚回答的问题:
Rancher环境和K8S集群是一样的吗?对于使用K8S的环境。或者一个环境可以包含多个集群?
Rancher主机和K8S节点是同一件事吗?同样,对于使用K8S的环境。
一个环境包含一组计算机主机/节点、一个作为4个选项之一的编排引擎kubernetes,以及一组具有不同角色的成员
假设我们有一个复制集定义文件,如下所示:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-deployment
labels:
tier: front-end
spec:
template:
metadata:
name: my-pod
labels:
tier: front-end
spec:
containers:
-
资料:
Kubernetes版本:1.14.1
云:Azure不是AKS
DNS:CoreDNS
部署者:库布斯凯
集装箱:集装箱
3个工作节点
描述
我有这样一套:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: busy
spec:
serviceName: busy
selector:
matchLabels:
app: busy
replicas: 3
template:
我想在使用NodePort时指定端口,但如何知道所有节点上都有哪个端口可用,我不希望端口冲突 您可以使用
kubectl get svc-所有名称空间
然后您可以使用类型grep
在那里,您可以看到所有分配的端口。它是基本的管道和输出过滤
kubectl获取svc-all namespace | grep ClusterIP |而read-r(端口);;做回显$port;完成您可以获得所有服务、grep节点端口并查看结果
$ kubectl get services --all-namespac
标签: Kubernetes
google-kubernetes-enginegcloudtraefiktraefik-ingress
我试图为我的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侧车。目标是能够在不影响性能的情况下将NFS卷装载到现有pod。同时,我希望能够以只读方式将相同的NFS卷装载到另一个pod或服务器上,以便查看其中的内容。有人试过这个吗?有人有这个程序吗?我建议使用PersistentVolume,它使用NFS驱动程序和PersistentVolumeClaim,而不是使用侧车。如果使用RWX/ReadWriteMany访问模式,则可以将共享装载到多个POD中
例如,pv:
聚氯乙烯:
并安装在吊舱中:
kind: P
我很难理解在GKE容器中存储文件的位置?我已经看到了文件系统布局的以下文档:
但是,web上也有Dockerfile示例,它们将可执行文件复制到布局中未列出的其他路径,例如/usr或/go。其中一个例子如下:
另一个问题是:如果我有运行时代码,需要在容器启动后下载某些配置信息,那么我可以将配置文件写入与可执行文件相同的目录吗?或者我必须选择/etc或/tmp
最后,布局文档指出,/home和/var存储引导磁盘生命周期内的数据?这是什么意思?这与pod或节点的生存期相比如何?当您想在容器中存
我想将流量从Kubernetes中的负载平衡器定向到部署。但是,我希望每个连接都连接到一个特定的pod,并维护到该pod的连接,而不是试图在部署的所有pod之间实现均匀负载。我将把GRPC请求发送到pod上的一个有状态实例,客户端的GRPC请求不发送到其他pod是至关重要的
我当前的实现可能是不必要的复杂。以下是伪代码:
使用自定义python调度程序初始化集群。
创建了几个具有有状态应用程序的pod,每个pod都有一个节点端口服务和唯一的节点端口。
客户机使用套接字接口与python调度程序对
当我尝试使用ServiceAccount部署时,即使我已经设置了ClusterRole绑定,也会得到请输入用户名-您知道为什么吗
库贝特尔:
kubectl apply -f deployment.yaml
角色和绑定:
kubectl create clusterrole tutorial-role \
--verb=get,list,watch,create,update,patch,delete \
--resource=dep
假设我的应用程序中有多个端点,它们通过入口控制器公开为不同的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:
与我的团队一起,我们正试图将我们的微服务转移到openj9,它们在kubernetes上运行。然而,我们在JMX的配置上遇到了一个问题。openjdk8-openj9
当我们尝试与jvisualvm建立连接并与Kubernetes进行端口转发时,连接被拒绝。
除了从Hotspot切换到OpenJ9之外,我们没有改变配置
错误:
E0312 17:09:46.286374 17160 portforward.go:400] an error occurred forwarding 1099 -
Kubernetes值中是否可能引用同一文件中的值?我正在做一个for循环,大多数env变量都很好,但这一个依赖于其他一些val,需要在值内复制/引用它
image:
repository: nginx
tag: stable
someCustomVal:
- name: x
value: xx
- name: y
value: yy
- name: z
value: {{ .Values.image.tag }}
顺便说一句,上述配置不起作用,但寻找等效的;我可以只在部
我们试图为我们的集群强化gke优化图像gke-1.15.11。我们在节点实例中引入了一个ssh,并在/home/kubernetes/kubelet-config.yaml文件中进行了更改,然后运行kubebench来检查是否所有条件都已通过8个条件失败,而这些条件是我们在文件中更改的确切条件。但是,随后我们在/etc/default/kubernetes中对参数进行了精确的更改,并再次运行kubebench,直到条件通过。但是,当我们重新启动实例时,我们看到了在/ect/default/kub
我已经创建了一个Kubernetes部署,其POD由模板定义。我需要更新pod定义,以包含就绪性和活跃性探测,因为据我所知,模板不允许创建这些探测。有什么想法吗
部署的问题是它不允许我添加探测定义。如果使用如下所示的探测定义:
apiVersion: apps/v1
kind: Deployment
metadata:
name: <appdeployment>
labels:
app: <appname>
spec:
replicas: 3
se
作为anthos服务网安装的一部分,我包括grafana和prometheus,
我能够使用grafana.ini文件中的google.auth确保对grafana的访问。
还有什么方法可以让我安全地接近普罗米修斯吗
谢谢最常用的是oauth2\u代理,尽管有很多选项。最常用的是oauth2\u代理,尽管有很多选项。您是否有任何关于如何实现oauth2\u代理的文档,并且您知道当您将普罗米修斯作为anthos服务网格的一部分时,它是否适用,感谢您将它作为一个侧车运行,而不是直接公开普罗米修斯,而
我们可以通过CSI一次创建多个持久卷吗?基本上,存储支持从源创建的克隆数。我想看看是否可以通过CSI利用这一点,这样我只需调用一次就可以创建10个克隆。您可以使用它按需创建PV。假设我在存储类对象中添加一个字段“numberOfClones”,并使用它动态创建pvc。我将在CSI CreateVolume方法中获取字段“numberOfClones”。存储可以创建10个克隆并返回。但是K8s将如何将10个卷ID连接到pvc/pv?动态资源调配不需要“NumberOfClone”。所以不要使用它,
我的helm客户端和服务器是不同的版本。我需要更新我的客户端,使其与服务器的版本相同
$ helm version
Client: &version.Version{SemVer:"v2.15.2", GitCommit:"8dce272473e5f2a7bf58ce79bb5c3691db54c96b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.3", GitCommit:"1ee0254c86d
我有一个新的服务,它发出的事件太多,以至于etcd空间不足。这些是删除后1小时,但我希望他们被删除得更快。有没有办法在每个事件上设置TTL?有一个标志用于:
-事件ttl持续时间默认值:1h0m0s
保留事件的时间量
您可以使用Kubernetes cronjob删除这些。
标签: Kubernetes
docker-registrykubernetes-poddocker-imagedocker-layer
我修改了Docker图像中的内容并运行了Kubernetes吊舱。然而,Kubernetes吊舱的内容是旧版本的Docker图像,而不是修改后的图像
怎么可能呢
我猜K8s worker节点正在尝试从本地获取尽可能多的层,而从docker注册表获取的层很少。
如何解决此问题,使K8s工作节点每次仅从注册表中提取docker映像的所有层?将imagePullPolicy设置为始终
样本:
apiVersion:v1
种类:豆荚
元数据:
名称:demo
规格:
容器:
-名称:图像名称
图像:我的
我有两个证书类型的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计划程序吗?
除了Pod/Deployment规范中的schedulerName之外,还有其他方法指定调度器吗
如何确定默认调度程序?它是基于领导人选举吗
选择权
不,它不是基于-leader elect,即在启用leader election的情况下运行同一计划程序的多个复制副本,以便在任何给定时间点只有一个副本充当lea
我看一下这个帮助需求:
dependencies:
- name: postgresql
version: 8.6.2
repository: https://kubernetes-charts.storage.googleapis.com/
condition: postgresql.installdep.enable
资料来源:
第八届博士后非常非常老。我猜这个版本只是一些软件包的版本
但是我怎样才能得到更多关于这个包裹的信息呢
我看。但这个URL似乎是为机器人
标签: Kubernetes
google-kubernetes-enginekubernetes-podpersistent-volumes
我有一个pod,它使用2个持久卷。持久卷位于不同的区域中。部署时,我遇到以下错误:
node(s) had volume node affinity conflict
以上问题有什么解决办法吗
我有一个pod,它使用2个持久卷。持久卷位于不同的区域中
Pod装载的卷必须位于同一可用性区域中,以便可以将它们装载到Pod计划所在的节点上
您还可以通过将StorageClass设置为regionalpd StorageClass来使用,但这样做成本更高、速度更慢,并且会使卷镜像到两个区域中。但这有点
我正试图通过以下命令将本地文件夹移动到kubernetes卷中:
kubectl cp /* mynamespace/mypod-xxxx-xxxx:/var/www/my-content
不幸的是,我收到了以下错误消息:
错误:src或dest之一必须是远程文件规范
就连我也将卷装载配置如下:
volumeMounts:
- mountPath: "/var/www/my-content"
name: mycontent
我在AKS中的“azure文件”存储类上通过PersistentColumeClaims创建了几个PersistenVolume。现在,Azure提供的StorageClass的装载选项不符合我们的需要,我必须使用不同的装载选项对其进行更新/重新配置
我现在必须手动销毁绑定的PersistentVolumes以强制重新创建和重新配置(不同的装载),还是由供应器负责
最好的办法是什么
是否删除PersistentVolume本身
删除索赔
删除卷绑定的位置(我想不是)
是否删除并重新创建整个状态
我执行了这个命令:$kubectl get services-n demo1
它返回了这个服务列表
服务清单
请告诉我如何删除此服务要在命名空间demo1中删除您的服务我的服务,您可以运行:
kubectl delete services my-service -n demo1
非常感谢@norbjd