我正在使用 Google Kubernetes Engine 部署一个网络应用程序,我想通过负载均衡器在我作为 Google Cloud Platform 中同一项目的一部分控制的现有静态 IP 地址上访问它,因为我想使用域名已经指向这个IP。
我用于 pod 的 yaml 文件是:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: gcr.io/my-project/my-app:latest
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法设置负载平衡器:
apiVersion: v1
kind: Service
metadata:
name: my-load-balancer
spec:
ports:
- port: 80
targetPort: 80
selector:
app: my-app
type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)
这提供了一个可以访问应用程序的外部 IP,但我找不到任何方法来配置它以使用我想要的 IP。该服务的文件提到了spec.clusterIP设置,但这似乎并没有涉及到的外部IP。同样,一旦设置了负载均衡器,服务的 status.loadBalancer.ingress.ip 字段就会设置为其外部 IP 地址,但这似乎不是一个可配置的设置。
作为替代方案,我尝试在 Google Compute Engine 控制台中手动创建转发规则,将来自静态 IP 地址的流量定向到 Kubernetes 设置的目标池,但是当我尝试连接时,连接被拒绝。
有什么方法可以做我想做的事 - 在选定的静态 IP 地址上在 Google Kubernetes 引擎上公开 Kubernetes …
docker google-compute-engine kubernetes google-cloud-platform google-kubernetes-engine
我已将集群中的 pod 扩展至 20 个,当我第二天看到时,已重新创建了少数扩展的 pod。
当我说重新创建 POD 时,它会被删除并重新创建,并且重新创建的 Pod 和缩放的 Pod 的时间戳会有所不同。
我无法找到重新创建 POD 的原因。
我无法找到哪个 POD 进行了重新创建,因为该 POD 已被删除并消失。Journalctl 中没有关于重新创建哪个 POD 的日志。有什么方法可以进一步调试以找到 POD 重新创建的原因。或 POD 被删除的可能原因是什么。
注意:我定义了就绪性和活性探针,但根据我的理解,这些探针将作用于容器,并且不会导致 POD 重新创建。
我在 Amazon Web Services 上由 kops 设置了一个 kubernetes 集群
我有 2 个站点设置。一个是通过 SSL/TLS/https 保护的,另一个是 http。两者都是 Wordpress 网站。域已更改以保护站点身份
入口配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-rules
spec:
tls:
- hosts:
- site1.com
secretName: site1-tls-secret
- hosts:
- www.site1.com
secretName: site1-tls-secret
rules:
- host: site1.com
http:
paths:
- path: /
backend:
serviceName: site1
servicePort: 80
- host: www.site1.com
http:
paths:
- path: /
backend:
serviceName: site1
servicePort: 80
- host: blog.site2.com
http:
paths:
- path: /
backend:
serviceName: site2
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
入口服务 …
我刚刚使用标准的az aks create ... --ssh-key-value .... 根据https://docs.microsoft.com/en-us/azure/aks/kubernetes-service-principal,
已创建 AKS 群集,并且由于未指定现有服务主体,因此会为群集创建服务主体。
我在哪里可以找到创建的 SP?谢谢
我在本地开发docker-compose,并且有一个 nginx 容器做一个简单的proxy_pass像这样:
location /app/ {
proxy_pass http://webapp:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
resolver 127.0.0.11;
}
Run Code Online (Sandbox Code Playgroud)
我现在想转移到 kubernetesGKE 中,最后一行给我带来了麻烦。
我试图将解析器切换到:
resolver kube-dns;
Run Code Online (Sandbox Code Playgroud)
我还尝试了各种其他 IP 和名称,但我不断收到以下错误:
nginx: [emerg] host not found in resolver "kube-dns"
Run Code Online (Sandbox Code Playgroud)
我的 kubernetes 设置是我有一个 pod,有 2 个容器:“webapp”和“nginx”。我只想有一个service指向 nginx的外部可以proxy_pass指向 webapp 的。
有任何想法吗?
我正在尝试重写服务的路径,同时在 kubernetes 上使用 nginx 入口保留浏览器 URL。
我需要的是这样的:
http://example.com/path=>http://servicehttp://example.com/path/bar=>http://service/barhttp://example.com/path/file.css=>http://service/file.css也就是说,使其/path成为上游服务器中的根(或某个不同的 url)。
从我在这里看到的,这是使用 proxy_pass 上的尾部斜杠来完成的,但 nginx ingress 似乎没有这个选项。
这可能是 nginx 入口吗?
我需要将文件树 rsync 到 kubernetes 集群中的特定 pod。如果只有一个人可以说服 rsync 相信 kubectl 的行为有点像 rsh,那似乎应该是可能的。就像是:
rsync --rsh='kubectl exec -i podname -- ' -r foo x:/tmp
Run Code Online (Sandbox Code Playgroud)
...除了这会遇到 x 问题,因为 rsync 假设需要一个主机名:
exec: "x": executable file not found in $PATH
Run Code Online (Sandbox Code Playgroud)
我似乎找不到帮助 rsync 构建 rsh 命令的方法。有没有办法做到这一点?或者可以通过管道实现相对高效的文件传输的其他方法?
(我知道gcloud compute copy-files,但它只能在节点上使用?)
我正在使用 Gitlab-CI 在 GCE 上部署 Kubernetes 集群。我想将成本保持在最低水平 - 这是我目前的设置:
f1-micro实例上运行Traefik使用 ServiceType 配置运行的系统 podLoadBalancerpostgres 吊舱ingress为 Traefik 配置的Web 服务器 pod我想降低部署成本。大部分成本由 GCE 负载均衡器承担。有没有办法在 GCE 上使用公共 IP 地址而不是负载均衡器?如果是这样,我是否可以使用分配给集群的 IP 地址(而不是保留静态 IP)?
换句话说,有没有办法在没有负载均衡器的情况下使用 GCE 将临时 IP 绑定到 Kubernetes 服务?
是否有任何其他配置我可以做不同的事情来降低 GCE 的总体成本?
load-balancing google-compute-engine kubernetes google-kubernetes-engine
我正在 Kubernetes 中管理 Elasticsearch 部署。我看到磁盘存储已接近满,所以我想增加持久卷的大小。
我想在有状态集中更改此值:
spec.?volumeClaimTemplates[0].spec.resources.requests.storage : "10Gi"
但是当我使用 Kubernetes 仪表板执行此操作时,我收到以下消息:
内部服务器错误
StatefulSet.apps "es-cluster" 无效:spec: Forbidden: 禁止更新 statefulset > spec,用于除 'replicas'、'template' 和 'updateStrategy' 以外的字段。
这让我觉得我必须删除我现有的 Stateful Set 并部署一个新的。
是否可以在不中断服务或丢失数据的情况下增加 per-pod 磁盘存储?
我有多个 Elasticsearch 数据 pod,并且正在使用副本计数 = 1,所以如果我能够将它们取下并一次升级一个 pod 的磁盘存储,应该不会有问题。鉴于上述限制,我只是不知道如何做到这一点。
kubernetes ×10
docker ×2
nginx ×2
amazon-ebs ×1
azure ×1
kubectl ×1
microk8s ×1
rsync ×1
ubuntu ×1