我以前会卷曲
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1beta3/namespaces/default/
作为我的基本URL,但在kubernetes 0.18.0中,它给我“未经授权”。奇怪的是,如果我使用API机器的外部IP地址(http://172.17.8.101:8080/api/v1beta3/namespaces/default/),它工作正常。在官方文档中,我发现:
很明显,我丢
我正在digitalocean ubuntu机器上安装kubernetes群集。我启动了集群并按照此操作运行。在设置过程中,启用节点日志记录、启用集群日志记录和启用集群DNS变量在配置默认值中设置为true
但是,没有为elasticsearch/kabana创建的控制器和服务。我确实需要为skydns手动运行deployAddon.sh,是否需要为日志记录和监视执行相同的操作?或者我在默认配置中遗漏了什么。默认情况下,日志记录和监视服务不在默认名称空间中
您应该能够看到服务是否使用kubect
我在google容器中创建了/usr/startup.sh脚本,希望在每个pod启动时执行它
我试着通过yaml中的命令来实现它,如下所示
命令:“sh/usr/start.sh”
命令:[“sh”、“-c”、“/usr/start.sh”]
请告诉我是否有任何方式可以在google container/pod中启动时执行已定义的脚本。您可能需要查看postStart
可以在以下列表中找到一个示例:
以下是:
您可能需要查看postStart
可以在以下列表中找到一个示例:
以下是:
启动脚本在
我们为每个环境使用单独的专有网络。spinnaker是否支持针对不同的Kubernetes集群?添加临时环境是否可行?Spinnaker支持多个Kubernetes群集,每个群集都作为Spinnaker配置中的“帐户”添加。配置的帐户在部署时显示为选项,每个应用程序的服务器组汇总到它们所属的帐户下
可以更改该配置并在运行时刷新它,但这将涉及编辑支持Spinnaker的Clouddriver组件的磁盘上yaml文件并触发/config刷新端点。您可以使用类似于此的配置。这里我添加了2个k8s帐户,
我计划将Kubernetes实例迁移到ETCDv3。
您知道Flannel是否可以与etcd v3一起使用吗?从我的部署过程来看,Flannel现在(2019/09/06)与etcd v3.0不兼容。我正在寻找一种方法
处理这个问题,当我启动flannel时,它会抛出以下错误:
E0908 20:05:41.432715 28891 main.go:382] Couldn't fetch network config: 100: Key not found (/kube-centos)
我已经在GKE集群中安装了Deis Workflow v.2.11,我们的一些应用程序共享相同的值,比如代理URL和证书。我可以使用这些值将它们放入环境变量中,甚至可以放入.env文件中。
但是,对于每个新应用程序,我都需要创建一个.env文件,其中包含共享值,然后调用
deis config:push
如果其中一个共享值发生变化,我需要调整每个应用程序的每个配置并重新启动它们。我想修改ConfigMap中的值一次,更改后,Deis重新启动应用程序
有人知道是否可以从Kubernetes Co
标签: Kubernetes
google-cloud-sqlgoogle-kubernetes-engine
在运行我们的应用程序之前,我需要更新我的数据库架构。基于此,我决定使用init容器来完成这项工作
因为我的SQL实例是托管的Google Cloud SQL实例,所以我需要gce proxy才能连接到数据库。我的初始容器如下所示:
initContainers:
- name: cloudsql-proxy-init
image: gcr.io/cloudsql-docker/gce-proxy:1.09
command: ["/cloud_sql_proxy"
我在配置入口服务时遇到问题
这是我如何配置kubernetes的:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: web-spa-development-deployment
spec:
template:
metadata:
labels:
app: web-spa-development-291
spec:
containers:
- name: web-spa-developm
我安装了Kubernetes并执行了kubeadm init,还从worker加入。但是当我运行kubectl get节点时,它会给出以下响应
服务器没有资源类型“节点”
这里可能有什么问题?无法在/var/log/messages中看到任何内容
这里有什么提示吗?在我看来,身份验证凭据设置不正确。您是否将kubeconfig文件/etc/kubernetes/admin.conf复制到~/.kube/config?如果使用kubeadm,则应将API服务器配置为在6443上运行,而不是在808
每当对图像进行更新时,我都会使用CI来更新kubernetes集群。每当映像被推送并具有最新标记时,kubectl就会应用现有的部署,但不会更新任何内容
这就是我们要做的
$kubectl apply--record--filename/tmp/deployment.yaml
我的目标是在运行apply时执行滚动部署
apiVersion:extensions/v1beta1
种类:部署
元数据:
名称:api
规格:
副本:1份
模板:
元数据:
标签:
应用程序:api
规格:
容器:
-名
我有一个keystore.jks文件,我需要将它作为一个env变量传递给docker进程
我使用下面的命令将文件作为机密存储
kubectl创建机密通用ssl密钥库证书
--从文件=./keystore.jks
在my deployment.yaml中使用上述秘密,如下所示
{
"name": "SERVER_SSL_KEYSTORE",
"valueFrom": {
"secretKeyRef": {
我有一个pod yaml文件(见下文)。它有我想要的所有属性,除了副本属性。因此,我必须编写部署yaml
apiVersion: v1
kind: Pod
metadata:
name: app-ykt
labels:
app: app-ykt
purpose: ykt_production
spec:
containers:
- name: app-ykt
image: app
imagePullPolicy: IfNotPresent
我希望在Kubernetes中运行一个有状态的应用程序(对特定文件夹执行读/写操作),而不依赖于单个实例
我可以为此要求使用StatefolSet吗
是否有必要使用共享文件系统(例如:GFS、EFS…)
如果是,是否会影响我的应用程序的性能
答案将取决于以下因素:a。该文件夹是否与应用程序共享?B同一容器的多个实例是否需要访问同一文件夹,或者它们可以拥有自己的本地副本?在这个用例中你需要切分吗?是的,我需要共享。但如果使用专用卷(例如:EBS),将导致单点故障。如果我使用EFS/GFS,是否会导
我不能和车旁的吊舱说话。。。任何帮助都将不胜感激
这是我的部署
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sidecar-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: sidecar
spec:
containers:
- name: sid
我正在集群配置中设置VerneMQ(MQTT代理)。因此,我将在一个有状态集合中启动4个副本。显然,VerneMQ希望通过DNS与群集中的其他代理通信,如下所示:
echo "Will join an existing Kubernetes cluster with discovery node at
${kube_pod_name}.${VERNEMQ_KUBERNETES_SUBDOMAIN}.${DOCKER_VERNEMQ_KUBERNETES_NAMESPACE}.svc.clust
昨晚我的Kubernetes集群对我的2个节点进行了加密,我无法了解发生了什么
kubectl Descripte nodes对发生故障的节点提供了以下信息
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ----
我正在打包一个应用程序,以便在prem Kubernetes集群上部署和运行。到目前为止,一切都很好,但我在一个基本上是数据库的组件上苦苦挣扎。此组件需要3个主节点和2个副本。有趣的是,主节点本身被视为副本,并且需要进行相应的配置(这是为了进行分片)。因为这是在prem上,所以我需要在3个物理主机上平衡主节点和副本对,每个主机上运行唯一的节点和副本对
这是布局的示例,其中N==主节点,R==副本
Host1 Host2 Host3
N1R1 N2R1 N3R1
N3R2 N1
我是kubernetes的新手,我有一个基本问题
我的理解是,我们可以使用“kubernetes run”命令生成yaml模板
但当我试着做同样的事情时,它没有起作用
不确定我的理解是错误的还是命令中有什么错误您需要指定所有必需的标志,在本例中,--image=…您只是缺少一些标志
命令应该是
kubectl run <podname> --image <imagename:tag> --dry-run -o yaml --generator=run-pod/v1
我理解将CPU请求设置为小于限制的用例-如果实例有空闲CPU,则允许每个容器中的CPU突发,从而导致最大CPU利用率。
然而,我真的找不到对内存执行相同操作的用例。大多数应用程序在分配内存后不会释放内存,因此有效地应用程序将请求最多“限制”内存(这与设置request=limit的效果相同)。唯一的例外是在已经分配了所有内存的实例上运行的容器。我真的看不出这有什么好处,缺点是更不确定的行为,很难监控(一个容器比另一个容器具有更高的延迟,这是由于GC太重)。
我能想到的唯一一个用例是内存缓存中的阴
我一直在尝试使用Kubernetes在本地部署Kafka和schema registry。但是,架构注册表pod的日志显示以下错误消息:
ERROR Server died unexpectedly: (io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain:51)
org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic
我当前使用以下脚本等待作业完成
ACTIVE=$(kubectl get jobs my job-o jsonpath='{.status.ACTIVE}')
直到[-z$有效];do ACTIVE=$(kubectl get jobs my job-o jsonpath='{.status.ACTIVE}');睡眠30分钟;完成
问题是作业可能失败,也可能成功,因为它是一个测试作业
有没有更好的方法达到同样的效果?是的。正如我在中指出的,您可以使用该命令。谢谢。是否可以等待多种条件?还是消极
我只是使用本教程完全设置了prometheus和grafana仪表板
我试图查询普罗米修斯的一些东西,它成功地绘制出了这幅图。但当我连接到普罗米修斯数据访问我的Grafana仪表板时,它会返回如下图所示的空图表
我是否遗漏了该步骤中的某些内容?可能在导入仪表板之前,您没有在Grafana中创建数据源。手册中没有规定,但没有它仪表板将无法正常工作
如何在Grafana中创建数据源:
开放式配置(gear)->数据源
按“添加数据源”
选择普罗米修斯
指定Prometheus服务器URL:(例如:
标签: Kubernetes
google-kubernetes-enginekubernetes-networkpolicygke-networking
我试图限制我的openvpn,以允许访问内部基础设施,并仅通过“开发”名称空间对其进行限制,因此我从简单的策略开始,该策略拒绝所有出口流量,看不到任何效果,也看不到集群对其应用的任何反馈,我已经阅读了所有正式和非官方文档,没有找到解决方案,以下是我的策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: policy-openvpn
namespace: default
spec:
podSel
我在一个节点中设置了一个新的k8s,它被污染了。但是当我试图创建一个简单的PostgreSQL时,PersistentVolume无法成功创建
下面有一些详细信息
StorageClass是从官方页面复制的:
StatefulSet是:
kind: StatefulSet
apiVersion: apps/v1beta1
metadata:
name: postgres
spec:
serviceName: postgres
replicas: 1
...
volumeCl
我已经在本地的minikube中成功地实现了PodSecurityPolicys(PSP),并且在将其移植到GKE时遇到了麻烦。我现在的目标很简单-->不允许UID为0或具有特权访问的播客。
我的PSP很简单:
apiVersion: extensions/v1beta1
kind: PodSecurityPolicy
metadata:
name: default-psp
spec:
privileged: false
runAsUser:
rule: MustRunAsN
比如说,我有两个名称空间k8s-app1和k8s-app2
我可以使用下面的命令列出特定名称空间中的所有pod
kubectl get pods -n <namespace>
kubectl获取吊舱-n
我们需要将名称空间附加到所有命令,以列出各个名称空间中的对象。有没有一种方法可以设置特定的名称空间并列出对象而不显式地包含名称空间?我可以使用以下步骤切换名称空间
kubectl config set-context $(kubectl config current-contex
主要针对:谷歌云平台
我试图解决的总体问题是;从Google容器注册表中从私有Kubernetes中提取图像
更新刚刚添加了heptio contour,如果有人在那里遇到了这一点-因为heptio的好人已经创建了问题下面提到的脚本-谢谢
第一步是使用带有JSON密钥的服务帐户-如前所述。
但当我跑步时:
cat gcr-sa-key.json | docker login -u _json_key --password-stdin https://gcr.io
我应该可以登录docker,但
标签: Kubernetes
persistent-volumespersistent-volume-claims
我创建了一个简单的本地存储卷。大概是这样的:
apiVersion: v1
kind: PersistentVolume
metadata:
name: vol1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /srv/
我在一个名称空间中运行了两个部署,分别名为deployment-A和deployment-B
目前,它的配置方式是,如果a正在运行,那么我的Jenkins作业将部署B,反之亦然。但当A和B都在运行时,作业失败。
现在我想对它进行一些修改,以便如果a和B都在运行,那么作业应该删除最旧的一个(基于它们的部署时间)
我知道它可以通过一些shell脚本实现,但无法理解确切的命令。以下是您的命令:
kubectl delete deployment$(kubectl get deployments--so
我一直在使用CoreOS Dex将我的K8s应用程序与LDAP集成。
我只将LDAP配置为一个连接器,而在将其重定向到Dex时,我得到一个选项,如下所示:
使用电子邮件或ldap登录,会产生误导。
因为电子邮件身份验证不起作用
有什么方法可以从Dex UI中删除电子邮件身份验证吗?再深入一点,我发现我已将enabledPasswordDB选项启用为true。我相信通过这个参数,dex会尝试寻找一些本地电子邮件地址来登录。一旦我们将其设为false,我们就可以登录了。只需稍微深入一点,我就发现我已
不确定为什么会发生这种情况,但我们看到在Kubernetes群集中运行着带有活动POD的旧复制集,尽管它们所连接的部署已被长期删除(最长82天)。我们的部署将spec.replicas设置为最多2个,但是我们在这些部署中看到多达6/8个活动POD
我们目前正在运行k8s版本1.14.6。下面是一个示例部署
{
"kind": "Deployment",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "xxx
标签: Kubernetes
google-kubernetes-enginekubernetes-pod
嗨,我创建了一个节点应用程序,它使用kubernetes客户端库创建一个k8s作业。然后,该作业应用程序通过对我的节点应用程序的HTTP调用进行响应。为了减少网络延迟和时间,我必须将所有东西都放在集群中。这是否可以在部署中创建作业
参考资料:
您可以为代码构建docker映像,就像您可以使用
node server.js
要触发主应用程序并将相同的映像放置在Kubernetes作业中,请将其保存在其他目录中,并使用
command
作业/cronjob的yaml模板中的选项
这将为您排序
我正在尝试基于某些选择器为一组pod创建一个服务。例如,下面的getpods命令为我的需求检索正确的pods-
kubectl get pods --selector property1=dev,property2!=admin
下面是服务定义yaml的摘录,我试图使用与上面相同的选择器-
apiVersion: v1
kind: Service
metadata:
name: service1
spec:
type: NodePort
ports:
- name: por
我在eks上部署了一个grpc服务,并使用入口公开该服务。我部署了一个演示https应用程序,它成功了。但是,我对grpc应用程序有一个问题。该服务正在运行,但当我记录该服务时,我收到一个错误。grpc请求甚至没有发送到服务器。日志如下所示
level=info msg=“grpc:Server.Serve无法创建ServerTransport:
连接错误:desc=\“传输:http2Server.HandleStreams
收到来自客户端的虚假问候语:\\“GET/HTTP/1.1\\r\\
我对将Istio与EKS一起使用感到有点困惑。我们有两个spring boot微服务,一个是REST服务提供商,另一个是消费者。我们希望使用Istio实现Authn和authz
为此:
1.在提供者服务端:我有一个VirtualService,一个目的地规则(声明TLS模式对于传入流量应该是ISTIO_MUTUAL),一个授权策略,它基本上白名单了客户端服务帐户。我还有一个身份验证策略,如下所示:
apiVersion: "authentication.istio.io/v1alpha1"
ki
我的配置:
GKE集群v。1.15.7-gke.23
istio:1.4.3
Istio使用默认防火墙规则作为Loadbalacner创建Istio入口网关服务:
类型:入口
目标:GKE集群上的虚拟机
过滤器:0.0.0.0/0
协议/端口:tcp:15020、tcp:80、tcp:443、,
tcp:15029,tcp:15030,tcp:15031,tcp:15032,tcp:15443
我的目标是更新规则中的过滤器,只允许从允许列表IP地址访问端点
可以通过istio实现吗?AFAI
我正在使用初始容器(k8s版本:v1.15.2)在容器启动之前初始化skywalking(6.5.0)jar文件。但是我找不到初始容器创建的文件和目录,这是我的初始容器定义:
"initContainers": [
{
"name": "init-agent",
"image": "registry.cn-shenzhen.aliyuncs.com/dabai_app_k8s/dabai_fat/skywalking-agent:6.5.0",
标签: Kubernetes
ibm-connectionsibmhttpserverhcl-component-pack
将http用于从IHS到Kubernetes后端的连接。这不再是最新的,因此我希望在这些后端连接以及IHS中使用https,如下所示:
User <----- https -----> IHS <----- https -----> K8S Backend
用户IHS K8S后端
根据HCLs文档,我们刚刚得到
User <----- https -----> IHS <----- http -----> K8S Backend
用户IHS
标签: Kubernetes
persistent-volumespersistent-volume-claimsokteto
对于Okteto Cloud,为了让不同的POD/部署访问共享的PersistentVolumeClaim,我尝试将PersistentVolumeClaim的访问模式设置为ReadWriteMany:
使用kubectl应用我的部署成功,但部署本身在Okto web UI上超时,出现错误:
pod has unbound immediate PersistentVolumeClaims (repeated 55 times)
现在,将accessModes设置为ReadWriteOnce的同
我喜欢为每个gitlab命名空间/项目微服务提供一个来自monitoring.coreos.com的ServiceMonitor。
但在运行gitlab管道创建它时,出现了一个错误,即无法创建此ressource
servicemonitors.monitoring.coreos.com "service-monitor" is forbidden: User "system:serviceaccount:ABC_NAMESPACE:ABC-dev-service-account" canno
我想和库伯内特斯一起出版一本书。我成功地使用了官方软件包。但是我想使用一些旧版本的插件和一些自定义插件。在LocalWithDockerCompose文件中,我创建了一个flyaway容器,用插件填充插件目录(/opt/sonarqube/extensions/plugins)。并将该卷与sonarqube容器一起使用。结论是:Sonarqube extensions卷目录是从不同的容器(完成工作并死亡)创建(或填充)的
我想对库伯内特斯使用相同的路径,但不能这样做。我的飞走容器没有填满路径
我
此问题在K8S 1.16.4的安装过程中遇到
提示说它缺少Kubenpilies CNI 0.7.5的依赖性
但是,如果您直接使用YUM安装kubeni 0.7.5,kubelet 1.18将自动安装
完整信息
[root@k8s-node-2 yum.repos.d]# yum install -y kubelet-1.16.4-0
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base:
我正在尝试运行Prometheus,以便只监视特定名称空间中的POD(在openshift集群中)
我得到“不能在集群范围内列出pod”-但我已经尝试将其设置为不使用ClusterScope(只查看特定的名称空间)
我设定了:
prometheus.yml: |
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
我们有Prometheus在k8s上运行,但它不会再启动了,因为RAM需求不足(CPU也接近极限)。因为这对我来说是全新的,我不确定该采取哪种方法。我尝试使用稍微增加的RAM限制部署容器(节点有16Gi,我从145xxMi增加到15Gi)。这一地位一直悬而未决
Normal NotTriggerScaleUp 81s (x16 over 5m2s) cluster-autoscaler pod didn't trigger scale-up (it wouldn't fit if
这是谷歌云特有的问题。
我度假回来,注意到由于以下错误,我无法再管理工作负载或群集:“缺少帐户的编辑权限”
我是唯一可以访问此帐户(所有者角色)的人,但我看到了此问题。
疑难解答建议检查系统服务帐户角色,看起来它设置正确(如果我没有编辑它,为什么它不正确):
如果设置不正确,则建议关闭/打开GCP上的Kubernetes API,但当您按下“禁用”按钮时,会出现一个可怕的提示,提示您的Kubernetes资源将被删除,因此显然我不能这样做
在尝试连接到它时,我得到了
gcloud conta
我有一个k8s服务,它映射到带有2个副本的pod部署,并作为clusterIp服务公开。当第二个pod被安排到同一个节点时,我发现一个问题,即就绪探测(对容器端口中的api的http调用)失败,出现“无法连接错误”。这是因为端口冲突吗
部署
apiVersion:apps/v1
种类:部署
元数据:
名称:演示部署
名称空间:演示
标签:
应用程序:演示
规格:
副本:2份
战略:
类型:RollingUpdate
滚动更新:
最大涌浪:1
maxUnavailable:0
选择器:
火柴标签:
这是一个纯粹的理论问题。给出了一个标准的Kubernetes聚类,并设置了自动缩放。如果内存超过某个targetMemUtilizationPercentage,则会启动一个新的pod,并且它将接收到所包含服务的请求流。minReplicas的数量设置为1,maxReplicas的数量设置为5
当联机的POD数量达到最大值(在我们的例子中为5个)并且来自客户端的请求仍然向节点发送时,会发生什么情况?这些请求是否被缓冲在某个位置?它们是否被丢弃?我可以采取任何措施来避免请求丢失吗?我成功地测试了这
根据,您可以为K8s群集ping http端点以对其进行操作,而不是使用例如kubectl。它还说在/openApi/v2上有一个openApi接口。我正在MacOS上运行minikube,想查看一下。有人知道这是否可能吗
我试过:
minikube list service # Shows 'kubernetes' as a name
minikube list kubernetes
。。。打开浏览器至127.0.0.1:51377。但是,当我尝试转到https://127.0.0.1:51
我在prem k8s v1.19上使用的是Istio 1.8.0。我们有几个微服务正在运行,我使用的是STRICT模式进行peerauthentication。我可以验证,如果我使用PERMISSIVE模式,我没有收到任何503错误
我真的很难找到任何解决方案,因为我不想按建议使用许可模式
这是istio ingressgateway的日志
$kubectl logs -f istio-ingressgateway-75496c97df-44g6l -n istio-system
[2021-
标签: Kubernetes
google-kubernetes-enginekubernetes-ingress
为如下服务创建外部入口
一切都被创造了,但没有我所期望的行为
不使用全局IP,而是使用另一个IP
HTTP仍处于启用状态
apiVersion:“扩展/v1beta1”
种类:“入口”
元数据:
注释:
kubernetes.io/ingres.allow-http:false
kubernetes.io/ingres.global-static-ip-name:“我的入口ip”
标签:
app.kubernetes.io/instance:“我的服务api”
app.kubernetes.