“基于级别”和“基于边缘”的一般含义是什么
我从kubernetes文档中读到“换句话说,系统的行为是基于级别的,而不是基于边缘的”:
使用谷歌,我只发现:
谢谢。我想说他们在网站上解释得很好:
发布或放置对象的新版本时,“规范”将立即更新并可用。随着时间的推移,系统将使“状态”与“规范”保持一致。无论该节以前的版本如何,系统都将朝着最新的“规范”前进换句话说,如果在一次PUT中将值从2更改为5,然后在另一次PUT中将值从2更改为3,则在将“状态”更改为3之前,系统无需在5处“触底”
因此,
我有一个2主机coreos供电的k8s设置,如下所示:
它被设置为与jenkins kubernetes插件一起工作,过了一段时间,我让它开始工作。它在主机上调度容器,一切正常。然后我在周末离开了它,回来后发现容器现在正试图在另一个节点(不是主节点)上进行调度,但它们无法同步
kubectl describe pod jenkinsminions-1582d1b3b52f79
但我只有8个docker容器在主容器上运行,4个在从容器上运行。我不应该耗尽所有的IP地址空间。我将如何从这里开始进
。。。我想要一个172.16.x地址
集群中的容器吊舱将从此IP地址范围分配一个IP地址。使用介于/8和/19位之间的掩码大小,输入10.0.0.0/8范围内的范围(以CIDR表示法),或将此字段留空以使用默认范围。-GKE“容器地址范围”字段的“创建容器群集”工具提示
除了假定10.0.0.0/8,我在Kuberenetes文档中找不到任何关于此限制的真实参考:
不过,GCE本身对这些IP一无所知,因此它不会对它们进行NAT,以获取出站互联网流量。为了实现这一点,我们使用iptables规则来
问题与标题相同。我正在CentOS 7上使用Kubeadm部署Kubernetes群集,并计划使用HA解决方案复制主群集
尽管中列出了大量工具,“构建高可用性”集群是一个单独的主题,K8s还没有推荐任何自动化工具
问题是是否有一个工具可以自动化HA设置步骤。实现这一点最有效的工具是什么?Kubeadm将来会支持HA吗?什么时候会支持?很多,发布前搜索很容易找到答案
谢谢你的回答。总结太棒了!我确实搜索了[这里]在询问之前,但最终没有发现任何有用的东西。从链接中列出的安装程序来看,kops和kub
我发现,直到几个月前。这意味着,对于任何使用Calico的Kubernetes集群,如果不使用服务或标记hostNetwork=true(这有点极端),就不可能直接在某个节点的端口上公开Pod的端口
从Kubernetes 1.7.0开始,这是可能的,但有必要改变印花布的配置,以允许进入,这是我试图做的,但没有成功。我从一个新的IBMBlueMix容器服务集群开始
My calico节点守护程序具有以下CNI_NETWORK_CONFIG环境变量:
{
"name": "k8s-pod-ne
我有一个工作的Kubernetes集群,托管在Google Kubernetes引擎中。我可以通过使用新代码构建Docker映像,将映像(带有新标记)推送到Google容器注册表,然后kubectl将更新的清单(使用新标记)应用到集群,从而将新代码应用到集群
我有一个手动步骤(特别是,railsdb:migrate将新的迁移应用到数据库),我希望在部署新代码后执行该步骤。我可以像执行kubectl exec命令一样很好地执行这个命令。但有一个问题:我需要针对新映像运行它,而不是旧映像。在旧映像上
安装完成后我遇到问题,尝试运行kubelet版本时出现类似这样的错误错误:无法运行kubelet:不支持使用swap运行,请禁用swap!或将--fail swap on标志设置为false/包含的过程/交换。我已禁用它,但仍然得到相同的错误
Ansible
- name: swap - remove current swaps from fstab
lineinfile:
dest: /etc/fstab
regexp: '^/[\S]+\s+none\s+swap '
假设我有一个rabbitmq服务,如下所示:
apiVersion: v1
kind: Service
metadata:
name: my-rabbitmq
spec:
ports:
- port: 6379
selector:
app: my-rabbitmq
我还有另一个部署:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: A-worker
spec:
replicas: 1
con
我想在我现有的kubernetes集群(v1.10)上安装KubePrometheus。在此之前,文档说我需要将控制器/调度器的ip地址从127.0.0.1更改为0.0.0。它还建议使用来更改这些功能:
controllerManagerExtraArgs:
address: 0.0.0.0
schedulerExtraArgs:
address: 0.0.0.0
阅读文档后,我尝试使用以下命令,但无效:
kubeadm upgrade --feature-gates controll
我有一个Kubernetes集群(v.1.10),有3个节点
当我关闭一个节点时,部署会在5分钟后自我修复(在正常节点上的部署中重新部署POD)
5分钟有点太多了。有什么办法可以让它更快吗?请看这里-完美!非常感谢。可能重复的
我在win10机器上有一个虚拟机centos(7.4版),我不使用AWS、谷歌云服务,也不使用Azure。我把主节点和节点放在一台机器上。我最初的问题域有5个组件,我将它们配置为ClusterIP,以便它们可以相互通信(eureka、config、api、uaa、zipkin)。现在我只需要在外面谈谈。但简而言之,为了方便起见,我制作了两个组件(api和eureka)。但现在,api需要从集群外部接收。这样我就可以配置入口了。当进入时,我需要配置rbac。我将yaml文件放在这里,并显示错误消息
我一直在绞尽脑汁想如何与GKE建立traefik。我现在得到一个我认为是RBAC相关的错误
github.com/containous/traefik/vendor/k8s.io/client-go/informers/factory.go:86:
Failed to list *v1beta1.Ingress:
ingresses.extensions is forbidden: User system:serviceaccount:default:default"
cannot li
我正在1.10.2-gke.3集群上编写自己的flexVolume驱动程序,在使其以可连接模式工作时遇到了麻烦
驱动程序在不可连接模式下工作,但是ReadWriteOnce不会强制每次只在一个节点上安装,这是我的驱动程序的要求,也是我在这里尝试实现的最终目标
我通过在init调用中返回功能,使驱动程序可连接:
{“状态”:“成功”,“能力”:{“附加”:true}
然后,当创建引用此驱动程序的卷的pod时,只调用getvolumename。我在这里返回什么或者我是否实现了调用实际上并不重要。这也
我已经使用Kubeadm和VirtualBox在笔记本电脑上安装了K8S群集。集群必须启动并运行才能看到如下所示的文档,这似乎有点奇怪
praveensripati@praveen-ubuntu:~$ kubectl explain pods
Unable to connect to the server: dial tcp 192.168.0.31:6443: connect: no route to host
是否有解决方法?请参阅“”
在幕后,kubectl刚刚向我的Kubernetes
我已经找到了使用gcloudCLI的方法
gcloud auth activate-service-account --key-file=serviceaccount.json
gcloud container clusters get-credentials $clusterName \
--zone=$zone --project=$project
kubectl config view --minify --flatten
但是,为了消除对gcloud cli的依赖,是否有任何编
我们在AKS集群中部署了一个映像,在部署期间需要使用configmaps更新该映像的配置条目
配置文件具有以下密钥,我们正在尝试替换“ChildKey”的值,而不替换整个文件-
{
"ParentKey": {
"ChildKey": "123"
}
}
configmap看起来像-
apiVersion: v1
data:
ParentKey: |
ChildKey: 456
kind: ConfigMap
name: cf
在部署中,configmap是这样使
我正在尝试启动一个kubernetes集群,但使用不同的url供kubernetes提取其图像。好吧,这只能通过配置文件实现
我不熟悉配置文件,所以我从一个简单的文件开始:
apiVersion: kubeadm.k8s.io/v1alpha2
imageRepository: my.internal.repo:8082
kind: MasterConfiguration
kubernetesVersion: v1.11.3
并运行命令kubeadm init--config file.yam
在谷歌云平台上的Kubernetes引擎上安装injest附件插件后,我需要重新启动Elasticsearch节点。我在吊舱上部署了弹性搜索。重新启动Elasticsearch节点的最佳方式是什么?如果Elasticsearch直接在VM上运行:
systemctl restart elasticsearch
如果Elasticsearch作为docker上的容器运行:
docker restart <container-id>
docker重启
如果Elasticsearch
我有一个使用CloudSQL已经运行了一年多的用于登台的集群,现在我想提出另一个指向同一数据库的GKE集群(同一个google项目)进行测试。但是,我在尝试在新集群中使用旧集群中的credentials.json时发现了错误
googleapi: Error 403: The client is not authorized to make this request., notAuthorized"
我已经在IAM中找到了一种打开新集群权限的方法,但是没有找到一种方法,尽管我看到了一个具有“
我在Digitalocean上使用Kubernetes,并安装了nginx ingress,它创建了一个外部负载平衡器。然而,当我使用helm安装Sentry时,另一个负载平衡器被创建。奇怪的是,虽然sentry只能通过nginx负载平衡器访问,也就是说,如果我将我的域指向sentry安装中创建的负载平衡器的ip地址,它就不会加载
我是库伯内特斯的新手,所以我很确定我在
安装Sentry并假设它将与我在安装图表时使用的值相关,因为它具有LoadBalancer的服务类型
所以我的问题是我能摆脱S
我正在kubernetes集群中设置一个名称空间,以拒绝任何传出的网络呼叫,但允许名称空间内的吊舱间通信,如nginx是指向nginx吊舱的kubernetes服务
如何使用网络策略来实现这一点。下面的网络策略有助于阻止所有传出的网络呼叫
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: deny-all-egress
namespace: sample
spec:
policyTypes:
我有三个环境—QA、阶段性和生产。
每个都有自己的凭据.properties文件
现在我只有一个秘密,它被引用并装载在我的yaml文件中,如下所示
- name: identity-service-secret-here-credentials-volume
mountPath: "/root/.secrets"
.
.
.
- name: identity-service-secret-here-credentials-volume
我在设置从外部访问kubernetes群集时遇到问题。这就是我想要实现的目标:
-能够从外部(从非“主节点”的节点,甚至从任何远程节点)访问kube群集,以便只能在特定命名空间上执行kube操作
我的逻辑是这样做:
创建新名称空间(我们称之为testns)
创建服务帐户(testns帐户)
创建角色,该角色允许在testns命名空间内创建任何类型的kube资源
创建将服务帐户与角色绑定的角色绑定
从服务帐户生成令牌
现在,我的逻辑是,我需要令牌+api服务器URL来访问kube集群,但“权限
所以我有一个configmap config.json
{
"apiUrl": "http://application.cloudapp.net/",
"test": "1232"
}
称为“连续部署”
豆荚
apiVersion: v1
kind: Pod
metadata:
name: continuousdeployment-ui
spec:
containers:
- name: continuousdeployment-ui
image: release.
我正在使用minikube和traefik入口创建一个粘性会话
因此,我已经完成了用户指南kubernetes为我提供的traefik的部署
我使用守护程序部署traefik。因为这是一个小项目,是我第一次使用kubernetes和docker
这是我的入口yaml文件
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cp-pluggin
annotations:
kubernetes.io/ingress
我正在EKS(Amazon)上托管的k8s集群上探索istio服务网格
我尝试在一个新的k8s集群上部署istio-1.2.2,其中demo.yml文件用于bookapp演示,并且我正确理解了大多数用例
然后,我在现有的dev集群上使用helm default profile(推荐用于生产)部署了istio,运行了100个微服务,我注意到我的服务可以调用http端点,但不能调用外部安全端点(,等等)
我得到:
curl:(35)错误:1400410B:SSL例程:CONNECT\u CR\u S
我已经在配置目录中定义了应用程序属性文件。Config dir位于下面的结构上
config
application.properties
application-test.properties
application-dev.properties
application-prod.properties
我已将configmap定义如下
{{ range $path, $bytes := .Files.Glob "config/*" }}
{{ base $path }}:
我想在Kubernetes上自动部署SonarQube,所以目标是自动配置所有内容。我成功地为helm chart创建了一个values.yaml,用于安装LDAP插件并使用我们的DC进行配置。但是,当它们出现时,它们似乎被忽视了
已尝试完全删除图表并重新安装:
helm delete --purge sonarqube-test
helm install stable/sonarqube --namespace sonarqube-test --name sonarqube-test -f v
我们有多个k8s集群,许多团队都在使用它们的微服务。我们已将kubectl访问权限限制为仅限有限成员。但很多时候,我们会收到一个请求,请求允许只读kubectl访问
k8s集群上的许多集群都在通过kops配置的ec2上运行。
版本详情:
$ kubectl version --short
Client Version: v1.13.0
Server Version: v1.11.6
---
$ kops version
Version 1.12.2
我试图创建一个安装了kubectl的test
我正在处理的应用程序作为部署在kubernetes集群中运行。为此部署创建的POD分布在集群中的各个节点上。我们的应用程序一次只能处理一个TCP连接,并且会拒绝进一步的连接。目前,我们使用kube代理(Iptables模式)在各个节点的吊舱之间分配负载,但吊舱是以随机方式选择的,当其传递到繁忙的吊舱时,连接会断开。我可以在我的用例中使用Kube路由器的基于最少连接的负载平衡算法吗。我希望在各个节点上运行的各个pod之间实现流量负载平衡。我可以用Kube路由器实现这一点吗
据我所知,kube代理的
我使用以下地形在裸机上部署了k8s集群
现在我有三个节点:
ewr1控制器,ewr1-worker-0,ewr1-worker-1
接下来,我想运行terraform应用并增加工作节点*ewr1-worker-3,ewr1-worker-4…*同时保留现有的控制器和工作节点。
我尝试从3开始递增count.index,但是它仍然覆盖现有的worker
resource "packet_device" "k8s_workers" {
project_id = "${packet_p
下面是我在k8s网站上遇到的例子
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
选择器:
跑步:我的nginx
无法理解在规范中标记它,然后在规范定义中应用相同的选择器背后的原理。找到了大量示例,但没有解释
apiVersi
如何导出单个kubectl上下文
我当前的kubectl配置文件定义了多个上下文,尝试将单个上下文与其余上下文分离是一个乏味的手动过程
是否支持此功能?kubectl配置视图-缩小将从输出中删除当前上下文未使用的所有信息kubectl配置视图-缩小将从输出中删除当前上下文未使用的所有信息请关闭主题问题。另请参见帮助中心。程序员常用的软件工具;是的,我同意,这也是一个实际和相关的问题。你错过了另一部分:而且。。。这是软件开发特有的一个实用的、可回答的问题。请关闭非主题问题。另请参见帮助中心。程序员
没什么大不了的,只是想知道将pod从一个名称空间移动到另一个名称空间的最佳实践是什么
您是否只是kubectl delete和kubectl apply?您不能将资源“移动”到另一个命名空间。另一个命名空间中可能已存在同名资源
因此,是的,您需要删除现有pod并在另一个命名空间中重新创建它。要移动资源,我们需要删除并重新创建策略。但是,如果要从不同名称空间的其他应用程序访问应用程序,最好允许一个名称空间中的服务与另一个名称空间中的服务对话,我们可以避免移动创建的pod。请纠正我的错误,但我非常确
我有一个K8s集群,我想发布到互联网上。将K8s发布到internet的最佳实践是什么
K8s安装在3台VPS服务器上,位于专用网络中
我有以下想法:
和代理一起。请求将通过代理并转发给K8s。
或者直接连接到K8s。一种方式是“OpenShift路由器”样式-您有一个(或多个)具有公共IP的节点,并将其连接到K8s群集,并在其上添加一些不同的标签。然后使用NodeSelector和hostNetwork=true在该节点上启动类似Nginx的入口控制器。在此方案中,Nginx ingres
我正在EKS中运行Kubernetes集群,但由于某些原因,部署上的nodeSelector属性并不总是被遵循
三种部署:
1-卡桑德拉:
kind: StatefulSet
metadata:
name: cassandra
labels:
app: cassandra
spec:
serviceName: cassandra
replicas: 3
...
spec:
terminationGracePeriodSeconds: 1800
我刚刚开始尝试使用HelmKubernetes包管理器。
但图表和模板的主题对我来说似乎有点困惑
我知道通过模板我将创建kubernetes yaml,它将创建对象并安装它们。
然而,图表也是如此,但后者是对YAML的抽象。和./Charts包含独立图表,而./templates仅对基础图表有效。所以我知道。但是什么时候我应该包括一个其他的图表或者只是创建一个模板
在网上寻找不同种类的图表,我仍然不知道该用哪一种
假设我有一个名为MyApp的项目,它有一个名为MyServer的组件,该组件将与M
我面临下一个问题。我想问库伯内特斯我是否能做些手术:
$ kubectl auth can-i list secrets --namespace iotdevadm
no - no RBAC policy matched
上面,我要求列出秘密。根据回应,我不能这样做
然而:
$ kubectl get secrets
NAME TYPE DATA AGE
builde
我正试图在Openstack helm部署之后部署Openstack
使用NFS时,请执行以下操作
当我启动nova图表来部署nova服务时,我遇到了这个错误
在nova计算舱上
2020-07-01 15:28:48.487 7036 ERROR oslo_service.service [req-11d17c73-10fb-4fad-abc0-ddf4805267e9 - - - - -] Error starting thread.
2020-07-01 15:28:48.487
我正在尝试使用在项目中使用kubernetes提供程序,并出现以下错误:
Initializing provider plugins...
Finding hashicorp/kubernetes versions matching "1.13.2"...
Error: Failed to query available provider packages
Could not retrieve the list of available versions for provid
考虑本文件中提供的以下内容
我试图实现的是从容器内部查看3个副本名称。
接下来,我能够获得当前的pod名称,但我还需要复制副本中的pod名称
理想情况下,我希望:
print(k8s.get_my_replicaset_names())
或
结果是:
[frontend-b2zdv,frontend-vcmts,frontend-wtsmm]
这是所有容器副本(当然也是当前容器)的pod名称,并最终比较名称列表中的当前名称以获得列表中的索引
有什么方法可以实现这一点吗?正如您所看到的,向下A
我已经建立了一个裸金属K8集群,我正在使用weavenet CNI。我正在尝试部署nginx,但pod卡在containercreating状态。当我查看日志时,我发现它在寻找法兰绒CNI。我不是在用法兰绒!我正在使用weavenet CNI,不确定如何解决此问题
Warning FailedCreatePodSandBox 109s (x21 over 5m25s) kubelet, ud-gbox-pro (combined from similar events): Fail
我需要在部署时在rawConfig多行字符串中安装一个带有动态“project\u id”标志的头盔
示例values.yaml
sinks:
console:
type: "console"
inputs: ["kafka"]
rawConfig: |
target = "stdout"
encoding.codec = "json"
stackdrive
有些TCP端口不应暴露于外界,而是在网络中的几个容器之间隔离
为了访问此类端口进行调试,可以从容器网络外部使用kubectl port forward。例如,对于访问开发人员工作站上的非公开k8s数据库:kubectl port forward pods/app-dev-database-0 5432:5432-n app
是否有一个相当于kubectl port forward的Podman来设置从Podman主机到现有和正在运行的容器的端口转发?我认为Podman没有这样的选项。podman
标签: Kubernetes
kubernetes-ingressnginx-ingressmetallb
我的集群中有三个节点位于我无法控制的防火墙后面。此防火墙有一个连接到它的公共IP,可以将流量转发到我的kubernetes节点。它向我的节点打开了端口80和443
最初,我在MetalLB配置中使用公共IP,如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
我试图将{{.Release.Namespace}}添加到字符串中,但它的字面解析形式仅为{{.Release.Namespace},而不是名称空间本身。我尝试过使用引号(“)和tpl,但都没有效果。我使用的是helmv3.5.4
在这方面:
config:
配置代理:|-
_前翼
#开始::重定向到openBalena VPN
acl是ssl req.ssl版本2:3.4
如果!是ssl,请使用后端{{.Release.Namespace}}openbalena-vpn\u 443
#结束::
标签: Kubernetes
docker-desktopwindows-server-2019kubernetes-health-check
我有一个单节点Kubernetes群集,运行在带有Docker Desktop的Windows Server 2019机器上
我可以通过https://localhost:6443/readyz和https://localhost:6443/livez。但是,我希望通过internet公开它们,以便我的客户端应用程序可以使用它们
我该怎么做呢
pod崩溃并重新启动后,是否可以在崩溃前检索pod的IP地址?这是一个非常广泛的问题,因为无法确定pod崩溃的确切位置和原因。
但是,我将展示在不同的场景中可以做什么
Pod的容器崩溃,然后重新启动:
在这种情况下,pod将保存其IP地址。最简单的方法是跑步
kubectl获得吊舱-o宽
输出将类似于
NAME READY STATUS RESTARTS AGE IP NOD
在我的案例中有一个场景,我正在istio ingress中挣扎
要求:我想在ISTIO入口网关中建立JWT验证。根据令牌中的某个键值,我希望将其发送到特定的虚拟服务
例如,如果我看到header name=“book revision”我应该将其发送到book revision服务
如果有人能给我一个已经在Istio ingress中实现的代码片段,那就太好了
去年,我在AWS上用
一年后的今天,我不记得哪些是私钥了。我必须通过SSH连接我的VM,但我不记得我在本地机器上把PK放在哪里了。是否仍然可以找到PK的位置?连接到Kubernetes群集通常与SSH密钥无关。为了能够在Kubernetes集群上执行命令,您需要一个kubeconfig,它将由kubectl使用。
如果您正在搜索kubeconfig,它通常位于~/.kube/config,但是路径可能会根据您的设置而有所不同(您可以通过定义如下环境变量来设置路径:export kubeconfi