标签: azure-kubernetes

什么Azure Kubernetes(AKS)'超时'碰巧断开群集中Pod的连接?

我有一个工作群集服务,所有服务都响应安装在Azure AKS上运行的Ingress nGinx掌舵.这最终是Azure特定的.

我的问题是:为什么我与此群集中的服务/ pod的连接会定期被切断(显然是通过某种空闲超时),为什么该连接断开似乎也与我的Az AKS Browse UI连接被切断一致?

这是为了获得最终答案,以确定触发导致本地"浏览"代理UI与我的群集断开连接的超时(更多背景为什么我要求遵循).

从Az CLI使用Azure AKS时,您可以使用以下命令从终端启动本地浏览UI:

az aks browse --resource-group <resource-group> --name <cluster-name>

这工作正常,弹出一个看起来像这样的浏览器窗口(yay):

Azure AKS断开连接进入pod的连接

在您的终端中,您将看到以下内容:

  1. 代理在http://127.0.0.1:8001/上运行按CTRL + C关闭隧道...
  2. 转发自127.0.0.1:8001 - > 9090转发自
  3. [:: 1]:8001 - > 9090处理8001的连接处理8001处理连接8001的连接

如果您将与群集的连接空闲几分钟(即,您不与UI交互),您应该看到以下打印以指示连接已超时:

E0605 13:39:51.940659 5704 portforward.go:178]丢失了与pod的连接

我仍然不明白的一件事是,群集内的其他活动是否可以延长此超时时间,但无论您何时看到上述内容,您基本上都处于相同的位置...这意味着我们可以谈论它看起来的事实就像我所有的其他连接一样,来自该服务器中的pod的OUT也被任何超时过程关闭,该过程负责切断与AKS浏览UI的联系.

那么问题是什么?

这对我来说是个问题的原因是我有一个服务运行Ghost Blog pod,它使用名为'Knex'的npm包连接到远程MySQL数据库.碰巧新版本的Knex有一个bug(尚未解决),如果Knex客户端和远程数据库服务器之间的连接被切断并需要恢复 - 它不会重新连接,只是无限制负载.

nGinx错误503网关超时

在我的情况下导致nGinx Ingress给我一个Error 503 Gateway超时.这是因为在空闲超时切断Knex连接后Ghost没有响应 - 因为Knex无法正常工作并且没有正确恢复与服务器的断开连接.

精细. 我回滚了Knex,一切都很好.

但是为什么我的pod连接从我的数据库中被切断开始呢?

因此,这个问题希望能够节省一些未来的人们试图解决与Kubernetes(可能是Azure特定的,可能不是)相关的幻像问题的日子,这些问题在服务/ pod已经闲置一段时间之后切断了连接.

azure ghost-blog kubernetes azure-kubernetes kubernetes-ingress

6
推荐指数
1
解决办法
2874
查看次数

如何使用Kubernetes进行扩展工作队列

我需要基于docker / python worker的可伸缩队列处理。我的想法转向了kubernetes。但是,我不确定最好的控制器/服务。

基于azure函数,我收到了传入的http流量,将简单消息添加到了存储队列。这些消息需要处理,并将结果反馈到结果队列中。

为了处理那些队列消息,我开发了python代码来循环队列并处理这些作业。每次成功循环之后,该消息将从源队列中删除,并将结果写入结果队列。一旦队列为空,代码就存在。

所以我创建了一个运行python代码的docker镜像。如果启动了多个容器,显然队列会更快地工作。我还实现了新的Azure Kubernetes服务以进行扩展。当我是kubernetes的新手时,我读到了在队列准备工作之前工作队列的工作范式。我简单的yaml模板如下所示:

apiVersion: batch/v1
kind: Job
metadata:
  name: myjob
spec:
  parallelism: 4
  template:
    metadata:
      name: myjob
    spec:
      containers:
      - name: c
        image: repo/image:tag
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,该作业无法重新启动。

通常,队列中充满了一些条目,然后一段时间没有任何反应。然后,更大的队列又会到达,需要尽快处理。当然,我想再次运行该作业,但这似乎是不可能的。另外,如果队列中什么也没有,我想将占用空间减小到最小。

所以我的问题是,在这种情况下我应该使用哪种架构/构造,是否有简单的Yaml示例?

python azure docker kubernetes azure-kubernetes

6
推荐指数
2
解决办法
1723
查看次数

什么是hcp-tunnelfront?

我刚刚使用AKS在azure上安装了我的kubernetes集群.我没有安装任何东西,我注意到'tunnelfront'pod正在运行:

tunnelfront

我试图找出这个pod的用途以及为什么它在我的集群上运行,找不到它存在的原因.我使用kubectl来描述pod:

Name:           tunnelfront-597b4868b8-8rz4w
Namespace:      kube-system
Node:           aks-agentpool-22029027-0/10.240.0.5
Start Time:     Mon, 07 May 2018 19:51:22 +0200
Labels:         component=tunnel
                pod-template-hash=1536042464
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"kube-system","name":"tunnelfront-597b4868b8","uid":"d46dab68-449e-11e8-961c-0a58a...
Status:         Running
IP:             10.244.1.72
Controlled By:  ReplicaSet/tunnelfront-597b4868b8
Containers:
  tunnel-front:
    Container ID:   docker://a69b8d6dcaef7253d41d44fbd57fd776a0dfbf70dbbbb8303a691bebab169c26
    Image:          dockerio.azureedge.net/deis/hcp-tunnel-front:v1.9.2-v3.0.3
    Image ID:       docker-pullable://dockerio.azureedge.net/deis/hcp-tunnel-front@sha256:378db6f97778c6d86de94f72573a97975cd7b5ff6f1f02c1618616329fd94f1f
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Tue, 15 May 2018 09:40:10 +0200
    Last State:     Terminated
      Reason:       Error
      Exit Code:    137
      Started:      Mon, 07 May 2018 19:56:15 +0200
      Finished:     Tue, 15 May 2018 09:40:09 +0200
    Ready:          True
    Restart Count:  1
    Liveness: …
Run Code Online (Sandbox Code Playgroud)

deis kubernetes azure-kubernetes

5
推荐指数
1
解决办法
2419
查看次数

找出Kubernetes节点的磁盘空间

这是一个全新的Kubernetes问题。我已经搜索过了,但是似乎找不到确切的答案。但这可能归结为对Kubernetes缺乏全面的了解。我在三个节点上部署了一些Pod,我的问题很简单。

  1. 如何检查节点上的磁盘总空间?
  2. 我如何看待每个吊舱占用了多少空间?

kubernetes azure-kubernetes azure-aks

5
推荐指数
1
解决办法
3521
查看次数

如何使用LoadBalancer服务从Azure Kubernetes内部获取客户端IP地址

我正在获取节点IP地址而不是客户端IP。是否可以使用类型为服务的客户端IP LoadBalancer?还是我需要使用入口控制器?

apiVersion: v1
kind: Service
metadata:
  name: app-svc
  labels:
    name: app-svc
    environment: dev
spec:
  type: LoadBalancer
  loadBalancerIP: XXX.XXX.XXX.XXX
  ports:
    - name: http-port
      port: 80
      targetPort: 80
      protocol: TCP
  selector:
      name: app-deploy
Run Code Online (Sandbox Code Playgroud)

azure kubernetes azure-load-balancer azure-kubernetes azure-aks

2
推荐指数
1
解决办法
934
查看次数

Shell(ssh)到Azure AKS(Kubernetes)群集工作程序节点

我使用AKS在Azure中有一个Kubernetes集群,我想“登录”到其中一个节点。节点没有公共IP。

有没有办法做到这一点?

kubernetes azure-kubernetes azure-aks

2
推荐指数
1
解决办法
1359
查看次数

是否可以在Azure AKS部署中更改子网?

我想将Azure Kubernetes服务的实例移动到同一虚拟网络中的另一个子网。是否可能或唯一的方法是重新创建AKS实例?

azure kubernetes azure-kubernetes azure-aks

2
推荐指数
1
解决办法
277
查看次数

如何kubernetes“ kubectl应用”不会更新现有部署

我有一个.NET核心的Web应用程序。这已部署到Azure容器注册表。我使用以下命令将其部署到我的Azure Kubernetes服务

kubectl apply -f testdeployment.yaml

与下面的yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myweb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: mycontainerregistry.azurecr.io/myweb:latest
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: my-registry-key
Run Code Online (Sandbox Code Playgroud)

这很出色,但是当我更改一些代码时,将新代码推送到容器并运行

kubectl apply -f测试部署

再次,直到我使用以下命令删除部署后,AKS /网站才会更新

kubectl删除部署myweb

我应该怎么做才能使其覆盖已部署的内容?我想在我的yaml文件中添加一些内容。(我试图将其用于Azure DevOps中的连续交付)。

kubernetes azure-kubernetes azure-aks

2
推荐指数
2
解决办法
96
查看次数

在Kubernetes集群中删除PersistentVolumeClaim

我在Kubernetes集群中有一个PersistentVolumeClaim。我想在我的开发环境中删除并重新创建它,以这种方式重置一些使用它的服务。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: kafka-disk1
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: managed-premium
  resources:
    requests:
      storage: 1Gi
Run Code Online (Sandbox Code Playgroud)

做到这一点的最佳方法是什么?

很抱歉这个菜鸟问题!

kubernetes azure-kubernetes

0
推荐指数
1
解决办法
1137
查看次数

容器环境变量更改时如何强制重新启动Pod

我正在尝试部署对环境变量有一些更改的映像,但是当我这样做时,我遇到了错误

该吊舱“ENVAR-演示”是无效的:规范:禁止:荚更新可能不会改变比其他领域spec.containers[*].imagespec.initContainers[*].imagespec.activeDeadlineSeconds或者 spec.tolerations(仅对现有容差的补充){“ Volumes”:[{“ Name”:“ default-token-9dgzr”,“ HostPath”:null,“ EmptyDir”:null,“ GCEPersistentDisk”:null,“ AWSElasticBlockStore”:null, “ GitRepo”:null,“ Secret”:{“ SecretName”:“ default-token-9dgzr”,“ Items”:null,“ DefaultMode”:420,“ Optional”:null},“ NFS”:null,“ ISCSI “:null,” Glusterfs“:null,” PersistentVolumeClaim“:null,” RBD“:null,” Quobyte“:null,” FlexVolume“:null,” Cinder“:null,” CephFS“:null,” Flocker“: null,“ DownwardAPI”:null,“ FC”:null,“ AzureFile”:null,“ ConfigMap”:null,“ VsphereVolume”:null,“ AzureDisk”:null,“PhotonPersistentDisk”:null,“ Projected”:null,“ PortworxVolume”:null,“ ScaleIO”:null,“ StorageOS”:null}],“ InitContainers”:null,“ Containers”:[{“ Name”:“ envar- demo-container“,” Image“:” gcr.io/google-samples/node-hello:1.0","Command":null,"Args":null,"WorkingDir":"","Ports":null, “ EnvFrom”:null,“ Env”:[{“ Name”:“ DEMO_GREETING”,“ Value”:“来自环境的问候0“,” Command“:null,” Args“:null,” WorkingDir“:”“,” Ports“:null,” EnvFrom“:null,” Env“:[{” Name“:” DEMO_GREETING“,” Value “:”您好,来自环境0“,” Command“:null,” Args“:null,” WorkingDir“:”“,” Ports“:null,” EnvFrom“:null,” Env“:[{” Name“:” DEMO_GREETING“,” Value “:”您好,来自环境 …

pod azure kubernetes azure-kubernetes azure-aks

0
推荐指数
1
解决办法
73
查看次数