我有
库伯内特斯:第1.1.1节
iptables v1.4.21
内核:UbuntuWily附带的4.2.0-18-generic
网络是通过在交换机上终止的L2 VLAN完成的
没有云提供商
我所做的
我正在试验kube代理的iptables模式。我已经用--proxy\u mode=iptables参数启用了它。似乎缺少一些规则:
iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 8 packets, 459 bytes)
p
我真的很难让kubernetes在CoreOS上工作我最大的问题是找到正确的信息来调试下面的问题
(我学习了本教程)
```
显然,kube控制器管理器存在问题。我的调试信息的两个主要来源(据我所知)是日志和docker日志
docker日志根本没有显示任何内容。
```
我还尝试使用docker exec登录此容器,但也没有成功
所以我的希望是基于这本杂志
```
所以kube控制器经理启动失败,但我不知道为什么。我如何解决这个问题
我将配置转储到下面:
```
```
```
```
```
我对此感到有点困惑,因为它已经工作了好几天没有问题了
我过去可以在没有问题的情况下将节点加入集群。我将在主节点上运行以下命令:
kubeadm init .....
之后,它将生成一个join命令和令牌,以向我想要加入的其他节点发出。大概是这样的:
kubeadm join --token 99385f.7b6e7e515416a041 192.168.122.100
我会在节点上运行这个,它们会毫无问题地加入。第二天早上,这突然停止了工作。这是我现在运行命令时看到的:
[kubeadm]
我知道有人问过这个问题(),但对我没有帮助。我将详细描述我的问题
我在CentOS 7虚拟机上安装了kubernetes群集,etcd和kubernetes版本为:
kubernetes v1.6.6
etcd v3.1.9
当我启动kubelet时,我发现以下错误:
E0620 09:57:38.178381 30625 kubelet.go:1165]图像垃圾
收集失败:找不到容器/E0620的数据
09:57:38.203274 30625工厂。转到:305]devicema
我想在kubernetes上创建一个loadBalancer服务,它公开了大量端口。因为你还不能在kubernetes上这么做()
我已通过以下格式的yaml文件手动输入端口范围:
apiVersion: v1
kind: Service
metadata:
name: service
spec:
ports:
- name: port10000
port: 10000
protocol: UDP
.
.
.
- name: port40000
是否有任何工具/方法可以获取PODs的CPU、MEM和净指标。除了下面的链接,还有其他可用的工具吗
-能够部署,但没有有用的POD指标。您可以看到POD指标
-库贝·普罗米修斯安装了“头盔”工具,没有吊舱指标。指标列表
-但它一直在努力注册定制服务。检查
-在博客中,他们提到了container\u cpu指标,但我没有看到任何这样的指标
更新1
如中所述,尝试使用yaml文件启动POD。使用GOPATH&GOROOT
ubuntu@ip-172-:~$ kubectl create -f
据我所知,Kubernetes控制器的目的是确保当前状态等于所需状态。然而,Kubernetes算子也做同样的工作
控制平面中的控制器列表:
部署
复制集
状态集
守护程序
等
通过谷歌搜索,我发现有K8s运营商,比如
etcd操作员
普罗米修斯操作员
香港运营商
然而,我无法理解为什么不能使用控制器来完成
操作员是否补充控制器
这两种设计的目的和功能有什么不同
在控制器和操作员之间选择时,需要记住哪些事项 我相信术语“kubernetes算子”是由
操作员是一个特定于应用程序的控制器,
我试图部署一个非常基本的Express应用程序,一个在EC2服务器(Ubuntu 16.04)上监听8080的小型服务器。在该服务器上,它是通过kops 1.8.0创建的Kubernetes集群。
之后,我创建了一个Dockerfile,如下所示:
FROM node:carbon
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin
# Create app direct
我得到了一些集群节点的延迟时钟。我是否需要更改timesyncd服务或其他任何东西来避免同步问题?时间同步非常重要,因为如果节点处于打开状态,它可能会导致“大脑分裂” 我相信这是非常重要的,但是如何证明时间同步的最佳方法呢?只需在所有节点上配置任何NTP服务即可。
我有一个Kafka群集在本地计算机上运行,默认设置在minikube设置之外。我在我的一个web服务中创建了一个生产者,并将其部署在minikube上
为了让制作人连接到卡夫卡,我使用的是10.0.2.2IP,我还使用该IP连接minikube以外的Cassandra和DGraph,因为它们工作正常
但是,Kafka producer不工作,甚至没有在发送数据时抛出错误,称代理可能不可用,或任何其他错误。但我没有收到消费者方面的任何信息
当我在Kubernetes之外运行这个web服务时,一切都
我正忙着写一个模型来预测文本类型,比如pdf文档上的名称或日期
该模型使用nltk.word_标记化和nltk.pos_标记
当我尝试在谷歌云平台上的Kubernetes上使用此选项时,我得到以下错误:
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
tokenized_word = tokenize_word('x')
tagges_word = pos_tag(['x'
我创造了一个Kubernetes的工作,但现在失败了。在哪里可以找到此作业的日志
我不确定如何找到关联的pod(我假设一旦作业失败,它就会删除pod)
运行kubectl descripe job似乎没有显示任何相关信息:
Name: app-raiden-migration-12-19-58-21-11-2018
Namespace: localdev
Selector: controller-uid=c2fd06be-ed87-11e8-8782-0
我已经为自定义计划程序运行了服务帐户和pod。那么我的自定义计划程序名称是什么?它将是pod名称、服务名称或其他任何名称。通常,您在编写计划程序本身时定义计划程序名称。然后为调度器创建一个docker容器,并在kubernetes中作为部署运行该调度器
现在,调度器将调度您的POD(基于您编写调度的方式)
您应该观看以下Kelsey Hightower关于如何编写和使用自定义调度程序的谈话
这是玩具调度器的源代码,你可以参考
希望这能给你一个简单的想法
编辑:
kelsey hightowe
通过Helm图表部署服务时,安装失败,因为不允许tillerserviceaccount创建ServiceMonitor资源
注:
ServiceMonitor是由普罗米修斯运营商定义的CRD,用于自动获取吊舱中运行容器的指标
Helm Tiller安装在单个名称空间中,RBAC使用角色和角色绑定进行设置
我想验证tillerserviceaccount的权限。
kubectl有auth can-i命令,像这样的查询(见下文)总是返回no
kubectl auth can-i列表部署--a
标签: Kubernetes
kubernetes-podkubernetes-deployment
我试图了解使用Pod反亲和力规则来避免部署中的Pod被安排在同一节点上是否是一种好的做法。这样就把吊舱散开在我的库伯内特斯星系群上
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
我们希望为部署在Openshift集群中的应用程序增加5个吊舱。
我们想为同一应用程序配置2条路由
For e.g. Pod1, Pod2 & Pod3 can be reached using route1
Pod4 & Pod5 can be reached using route2..
是否可以为多个POD配置两个不同的路由此DeploymentConfig由5个副本组成。因此,不可能为不同的吊舱创建单独的路线。您必须创建单独的DeploymentCon
我正在运行Kubeflow管道(docker方法),集群使用端点导航到仪表板。按照本链接中提到的说明创建集群。所有内容都已成功创建,集群生成了端点,并且工作正常
端点链接应该是这样的
除了最后一个工作负载外,管道的每个工作负载都正常工作。在上一个工作负载中,我正在尝试向云ml引擎提交作业。但它的日志显示应用程序无法访问该项目。这是日志的完整图像
错误:
(gcloud.ml engine.versions.create)权限被拒绝:请求已被拒绝
身份验证作用域不足
错误:
(gcloud.ml
我们有一个由5个节点组成的kubernetes集群。其中2个节点仅用于KIAM,其余3个用于容器部署
我已经部署和配置了prometheus和grafana,我需要配置CPU、内存和pod使用的监控。但是,我想从任何统计或警报阈值中完全排除承载KIAM的节点
普罗米修斯返回的唯一能够识别我需要的节点的东西是kube_node_labels度量中的label_workload=“gp”。我不知道如何让grafana在计算中只使用这些节点
也许可以使用某种查询联接或子选择来标识要包含的节点名称
我非
随着rancher版本2.x的发布,我们开始使用v3的API,但令我失望的是,没有合适的API文档。
如果我们访问Rancher文档页面,我们只会找到简短的介绍,而不是关于如何使用特定端点以及它们接受哪些输入的信息。
例如,我们有一个v3/cluster端点来创建集群,但它需要字符串/对象形式的“n”个输入。如何找出需要哪些属性,以及哪些属性映射到UI中的什么东西
api的v2有一些文档可用,但随着Rancherapi的v3的引入,情况发生了变化
用例:我需要自动化集群创建的整个过程,以指导图表
我正在使用Kubernetes golang operator sdk实现一个管理RabbitMQ队列的操作符。我想知道k8s是否有办法在我的定制资源上强制特定规范字段的不变性。我有以下golang结构,它表示一个rabbitMQ队列和一些参数,以便将其绑定到rabbitMQ交换:
类型RmqQueueSpec结构{
VHost字符串`json:“VHost,必选”`
Exchange字符串`json:“Exchange,必需”`
RoutingKey字符串`json:“RoutingKey”`
我没有配置任何范围限制或吊舱限制
但是我的节点显示请求和限制,这是限制吗?还是最大可见值
大约有20个活动节点,所有节点都具有相同的硬件大小-但每个节点都显示了不同的限制,使用kubctl descripe node nodeXX
这是否意味着我不能使用超过限制的内容
如果您再次仔细检查kubectl description node nodeXX的结果,您可以看到每个pod都有列:CPU请求、CPU限制、内存请求和内存限制。屏幕截图中显示的总请求和限制应该是pods请求和限制的总和。
如果您
标签: Kubernetes
google-kubernetes-enginereplicasetpreemption
我有一个在GKE上运行的3节点集群。所有节点都是可抢占的,这意味着它们可以随时被杀死,并且通常不会超过24小时。如果某个节点被终止,autoscaler会启动一个新节点来替换它。这通常需要一分钟左右的时间
在我的集群中,我有一个副本设置为3的部署。我的意图是,每个pod将分布在所有节点上,这样,只要集群中至少有一个节点处于活动状态,我的应用程序就会继续运行
我使用了以下关联配置,因此POD更喜欢在不同于已运行该部署的POD的主机上运行:
spec:
affinity:
podAnti
尝试在windows 10上启动minikube,但失败,出现以下给定错误。尝试删除上下文、配置文件本身并重新创建,但问题仍然存在
X无法设置kubeconfig:写入kubeconfig:写入文件C:\Users\/.kube/config:获取C:\Users\/.kube/config的锁时出错。kube/config:获取互斥锁时超时
谢谢。我也有同样的问题。最有可能是今天发布的1.6.0版。暂时降级到1.5.2。我刚刚下载并复制到我的路径,并从minikube start--vm dr
我正在kubernetes集群(v1.15.2)中创建一个XDB部署,这是我的yaml文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monitoring-influxdb
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
这完全是个问题,但我搞不懂。当我在终端中键入kubectl version时,我得到:
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.8", GitCommit:"ec6eb119b81be488b030e849b9e64fda4caaf33c", GitTreeState:"clean", BuildDate:"2020-03-12T21:00:06Z", GoVersion:"go1.13.8",
命名空间上已启用自动插入,我正在尝试使用Auto mTLS。已验证Istio飞行员和citadel是否正常运行。证书机密已正确创建和装载。istio代理无法使用以下日志启动。具体错误是无效路径:./var/run/secrets/istio/root-cert.pem
kubectl logs ratings-v1-85c656b747-czg8z -c istio-proxy -n bookinfo
2020-04-29T05:39:42.276131Z info FLAG:
我有一个有100个分区的主题。最初,有超过10亿条消息,我扩展了100个虚拟机,以并行地使用每个分区。现在,由于消息的数量现在已经下降到只有几百万条,因此分发似乎不再是统一的。我的问题是。。现在,随着延迟的下降,减少我的消费者群体中的消费虚拟机的数量,或者始终保持在100台,这有意义吗?我的理由是,我想知道是否会开始进行大量的再平衡,从而降低到接收器的输出消息的总体吞吐量
让我们忽略这个决策中的财务成本 只要不在生产者中使用键控消息,消息就应该在整个分区中均匀平衡;这适用于数十亿条消息,也适用于
我想根据注释的值过滤我的kubectl get deploy命令
类似于kubectl get deploy的simelar——注解stork.libopenstorage.org/skipresource=“正确”
目前没有线索如何做到这一点,我们不想添加一个额外的标签。上述两个命令的输出应如下所示:
kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
elastalert
比如说,我想安装一个像or这样的操作符,我想在不同的命名空间(如dev、int、prod等)中部署相应的数据库/CRD。这些操作符需要在kube系统中还是可以在一些独立的命名空间(如kubedb或redis ope)中
最佳做法是什么?利与弊是什么 操作符不需要位于任何特定的命名空间中。其工作方式是,运营商用于与Kubernetes API交互的服务帐户需要通过角色或clusterrole拥有正确的RABC
最佳实践是在操作符自己的单独名称空间中安装操作符。当您要卸载或升级操作员时,这降低了干扰
标签: Kubernetes
kubernetes-podkubernetes-apiserverclient-go
我在go中使用client go API来访问给定控制器(部署)下的POD列表。使用选择器标签查询属于它的pod列表时,您会得到一个PodConditions-
这与pod条件的官方文件一致-。但是文档不清楚如何访问这个条目数组。是否先按最近的条目排序?例如,如果我只想访问Pod的最新状态,应如何操作?从我在本地集群中进行的一次试验中,我得到了控制器的一个吊舱的更新(吊舱条件数组),如下所示
{Initialized True 0001-01-01 00:00:00 +0000 UTC 2020
我有以下部署定义:
...
containers:
- name: {{ .Release.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{ if .Values.env.enabled }}
我是Kubernetes世界的新手,但不久前,我使用OperatorSDK和Golang开发了Kubernetes操作符。我使用集群管理员角色运行操作员吊舱,但现在我想减少操作员可以使用的资源
是否有某种工具可以扫描操作员的代码并生成适当的clusterrole?或者有什么聪明的方法可以找到操作员使用的资源吗?最简单的方法可能是删除所有权限,然后根据抛出的错误重新添加每个权限
我看到了Kubernetes清单文件的两种“样式”
第一个是一个Kubernetes清单,一个也是唯一的文件,其中部署、服务、配置映射等,以及其他所有内容都在同一个文件中一个接一个地出现
第二个是资源有专用文件的地方。部署有一个deployment.yml,服务有一个service.yml,等等
虽然库伯内特斯支持这两种观点,但我想问一下每种观点的利弊。另外,在什么情况下首选第一个选项,首选第二个选项的版本是什么
这个问题并不是要引起一场关于解决方案a和/或反对解决方案B的辩论。这是一个说明每种
因此,正如在标题中一样,我想为我已经运行的应用程序(官方掌舵图中的sonarqube和jenkins)的掌舵添加标签。
我没有模板,只有values.yaml。我害怕添加模板,因为正如我所说的,应用程序已经在运行,我只想在元数据中添加几个标签。下面的评论中提到的两个图表都有一种定义自定义标签的方法
所以你需要这样的东西是values.yaml
# Jenkins
master:
podLabels:
label1Name: label1Value
# Sonar
podLabe
我已经在kubernetes上配置了fluentd,并配置了两个运行吊舱。
我想更改td_agent.conf文件,并添加另一个标记,但是,我无法更改每个pod中的conf文件。我该怎么办?我是否必须更改运行吊舱的yaml文件并重新运行它们
我是否必须更改运行吊舱的yaml文件并重新运行它们
对。问题是,当您仅更改配置映射值时,它不会触发您的POD重新启动,相反,它会动态更新配置映射和挂载,而fluentd不会对此进行处理
我想你是在用头盔部署fluentd。在这种情况下,需要向部署/守护程序集
我有一些由CronJobs创建的pod处于Error状态,这些pod请求的CPU/内存似乎没有释放,因为kubelet没有杀死它们。它会阻止安排其他吊舱
这是预期的行为吗?我应该用手清理它们以取回资源吗
谢谢。错误中的pod您应该删除此pod以释放分配给它的资源
但是,不需要清理处于完成或失败状态的POD来释放分配给它们的资源。可以通过运行simpleJob来检查节点中分配的内存资源
作业前的内存分配:
Allocated resources:
(Total limits may be ov
标签: Kubernetes
kubectlkubernetes-podazure-akskubernetes-service
尝试创建Kubernetes端点服务,以通过HTTPS协议上的静态IP调用集群外部托管的资源。
下面是端点代码
kind: Service
apiVersion: v1
metadata:
name: serviceRequest
spec:
ports:
- port: 8081
targetPort: 8094
---
kind: Endpoints
apiVersion: v1
metadata:
name: serviceRequ
最近我决定在一些虚拟机上建立一个k8s集群。
我过去曾与K8s合作过,但已经有很长时间了。
我希望在集群中运行的一件事情是使用Nginx的web服务器
我有3个虚拟机的1个主,2个工人。它们每个都有一个外部和内部IP
我想知道如何设置K8。
因此,我希望使用外部IP作为集群IP,但节点应与内部网络通信
我需要如何配置它?
我想我需要kubeadm init命令的其中一个选项,但我不确定
--control-plane-endpoint
--apiserver-advertise-addres
我正在运行芹菜执行器,并试图在KubernetesPodOperator中运行一些python脚本。下面是我尝试过但没有成功的例子。我做错了什么
跑步用脚尖
org_node = KubernetesPodOperator(
namespace='default',
image="python",
cmds=["python", "somescript.py" "-c"],
argum
我正在尝试运行Kubernetes作业,该作业将在每个主机上部署相同的pod,并在每个pod中运行相同的命令(相同的执行)。集群中有5名工作人员worker01,worker02,…,worker05。此定义在随机主机上调度一个pod:
apiVersion:batch/v1
种类:工作
元数据:
名称:硬盘完整性
标签:
工作:硬盘完整性
规格:
模板:
规格:
容器:
-名称:硬盘完整性
图像:一些图像
imagePullPolicy:如果不存在
命令:[“python”,“check.py
我目前正在通过“gitHub”操作开发我的ci/cd管道。
我的k8s部署由“helm”管理,在GKE上运行,我的“图像”存储在“gcp”中
我已经成功地通过“gitHub”操作构建和部署了一个新映像,现在我已经
希望其中一个POD将在映像部署到“gcp”后获取最新版本。
据我所知,当前流程是在创建新图像后更新头盔图表版本,并从k8s运行“头盔升级””(我说的对吗?),但目前我想跳过头盔
版本控制部分,只需强制pod获取新映像。
到目前为止,为了让它正常工作,在创建新映像后,我只是简单地删除了p
我面临的问题是,我无法使用浏览器的IP访问Kubernetes入口。我已经在Windows10 Home上安装了K8s和Minikube
我遵循这份正式文件:
首先,我在Minikube上运行下面的命令来创建部署
kubectl创建部署web--image=gcr.io/google samples/hello app:1.0
将创建部署,如下图所示:
接下来,我公开了我在上面创建的部署。为此,我运行了下面的命令
kubectl公开部署web--类型=节点端口--端口=8080
这创建了一
我的kubernetes集群有一个pod部署定义,即有10个pod副本。我遇到一个问题,pod实例的容器将进入不可恢复状态,我发现的唯一缓解措施是通过以下命令重新启动pod部署:
kubectl rollout restart deployment my-pod
我想通过liveness探测器甚至pod条件状态,找到一种自动执行pod部署重启的方法
目前是否有现成的解决方案?Kubernetes的pod对象为您提供了健康检查功能。如果吊舱不正常,吊舱控制器将自动重启吊舱
请在此处查看官方文件
我创建了一个秘密,当我部署一个应用程序来读取该秘密时,该应用程序会抱怨该秘密是一个目录
我做错了什么?该文件也可以作为文件读取
kc logs <pod>
(error) /var/config/my-file.yaml: is a directory.
这里是部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: a-name
spec:
replicas: 1
selector:
matchLabels
我使用3个VP设置了3个节点kubernetes,并安装了rook/ceph
当我跑的时候
kubectl exec -it rook-ceph-tools-78cdfd976c-6fdct -n rook-ceph bash
ceph status
我得到以下结果
osd: 0 osds: 0 up, 0 in
我试过了
ceph device ls
结果是
DEVICE HOST:DEV DAEMONS LIFE EXPECTANCY
ceph osd status未给出任何结
我在这里创造了一个K8S的秘密。我创造这个秘密是为了能够从私人回购中提取图像。我已经在与我的pods相同的名称空间中创建了这个秘密。我很难将这个秘密附加到我的播客上。我的POD被指定为作为部署集的副本(代码如下)。在创建了这个秘密并将这个秘密集成到deployment.yaml文件中之后,我看到任何新的pod仍然使用默认的秘密而不是这个新的秘密进行部署。任何关于如何将秘密附加到部署的所有pod(而不是pod定义)的想法都会很有帮助
部署。yaml
apiVersion:apps/v1
种类:部署
关于如何在Kubernetes设置Ignite,我有两个问题
是否所有节点都需要位于同一命名空间中?例如,如果我有一个胖客户机和一个服务器节点,那么这两个节点是否都需要在相同的名称空间中才能形成集群
根据我的研究,我认为答案是肯定的,它们需要在同一名称空间中,但我没有找到任何明确的文档
客户端和服务器节点是否都需要运行TcpDiscoveryKubernetesIpFinder,或者节点是否可以混合使用TcpDiscoveryKubernetesIpFinder和静态IPfinder
从我的研究
我最近使用自制软件在一台新的Mac电脑上安装了minikube和VirtualBox。我是按照政府的指示行事的
The connection to the server 192.168.99.100:8443 was refused - did you specify the right host or port?
这就是我启动集群的方式-
minikube start --vm-driver=hyperkit
The connection to the server 192.168.99.
目标:为准备一个values.yaml文件,以便在运行helm install…
以前的解决方案:目前,我正在使用带有以下值的稳定/rabbitmq ha图表。yaml:
extraPlugins:“rabbitmq\u消息\u重复数据消除”
外部容器:
-名称:下载插件
图片:busybox
命令:[“/bin/sh”,“-c”]
args:[”
wget
-O/opt/rabbitmq/plugins/elixir-1.8.2.ez/elixir-1.8.2.ez
https://githu
我们在DigitalOcean的K8s上使用Helm图表运行气流。任务是使用aiffort.contrib.operators.kubernetes\u pod\u operator.KubernetesPodOperator编写的。我们经常看到POD出现故障,并显示以下消息(但问题并不是一成不变的,因此大多数情况下它工作正常):
我们正在使用KubernetesExecutor
舵图信息-气流稳定/气流版本7.16.0
Events:
Type Reason Ag