我有一个工作群集服务,所有服务都响应安装在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):
在您的终端中,您将看到以下内容:
如果您将与群集的连接空闲几分钟(即,您不与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 Ingress给我一个Error 503 Gateway超时.这是因为在空闲超时切断Knex连接后Ghost没有响应 - 因为Knex无法正常工作并且没有正确恢复与服务器的断开连接.
精细. 我回滚了Knex,一切都很好.
但是为什么我的pod连接从我的数据库中被切断开始呢?
因此,这个问题希望能够节省一些未来的人们试图解决与Kubernetes(可能是Azure特定的,可能不是)相关的幻像问题的日子,这些问题在服务/ pod已经闲置一段时间之后切断了连接.
azure ghost-blog kubernetes azure-kubernetes kubernetes-ingress
我需要基于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示例?
我刚刚使用AKS在azure上安装了我的kubernetes集群.我没有安装任何东西,我注意到'tunnelfront'pod正在运行:
我试图找出这个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) 这是一个全新的Kubernetes问题。我已经搜索过了,但是似乎找不到确切的答案。但这可能归结为对Kubernetes缺乏全面的了解。我在三个节点上部署了一些Pod,我的问题很简单。
我正在获取节点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
我使用AKS在Azure中有一个Kubernetes集群,我想“登录”到其中一个节点。节点没有公共IP。
有没有办法做到这一点?
我想将Azure Kubernetes服务的实例移动到同一虚拟网络中的另一个子网。是否可能或唯一的方法是重新创建AKS实例?
我有一个.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-keyRun Code Online (Sandbox Code Playgroud)
这很出色,但是当我更改一些代码时,将新代码推送到容器并运行
kubectl apply -f测试部署
再次,直到我使用以下命令删除部署后,AKS /网站才会更新
kubectl删除部署myweb
我应该怎么做才能使其覆盖已部署的内容?我想在我的yaml文件中添加一些内容。(我试图将其用于Azure DevOps中的连续交付)。
我在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)
做到这一点的最佳方法是什么?
很抱歉这个菜鸟问题!
我正在尝试部署对环境变量有一些更改的映像,但是当我这样做时,我遇到了错误
该吊舱“ENVAR-演示”是无效的:规范:禁止:荚更新可能不会改变比其他领域
spec.containers[*].image,spec.initContainers[*].image,spec.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 “:”您好,来自环境 …
azure-kubernetes ×10
kubernetes ×10
azure-aks ×6
azure ×5
deis ×1
docker ×1
ghost-blog ×1
pod ×1
python ×1