Articles of kubernetes

重新加载kubernetes pod中的nginx conf

我有一个运行在GCE上的kubernetes容器。 其中一个服务是作为代理工作的nginx,而复制控制器则有10个副本。 现在我需要更改nginx.conf进行一些调整。 有没有办法让我重新加载所有的nginx豆荚? 现在对我来说,唯一的办法就是把它缩小到0,然后再把它放大到10。 这将导致短暂的停机时间。

在kubernetes中接收和提供静态文件

在pre-k8s,pre-container世界中,我有一个运行nginx的云虚拟机,并允许授权用户将新内容scp到webroot中。 我想在k8s集群中build立一个类似的设置来托pipe静态文件,目标是: 授权用户可以scp中的新文件 这些文件静态地在网上提供 这些文件保存在一个永久性的卷,以便重新启动时不会消失 我似乎无法弄清楚存储类+容器的可行组合,使这项工作。 我一定会很感激任何build议! 更新 我没有意识到的是,在同一个容器中运行的两个容器都可以具有与读取/写入相同的gcePersistentDisk 。 所以我最终的解决scheme看起来像一个nginx容器运行在同一个窗格中作为一个sshd容器,可以写入nginx webroot。 到目前为止,它一直在努力工作。

Kubernetes / Minikube入口错误(301永久移动)

我正在关注Kubernetes教程,并在我的MacBook上使用Minikube作为我的Kubernetes环境。 教程中的所有步骤都运行良好,除了使Ingress正常工作(我正在使用Ingress的教​​程, url是: https : //cloud.google.com/container-engine/docs/tutorials/http-balancer ) 。 通过Ingress访问时,出现“301 Moved Permanently”错误。 我的环境: MacBook(macOS Sierra,版本:10.12.5(16F73)) 为Minikube推荐的xhyve驱动程序 minikube版本:v0.19.0 我正在使用默认的入口控制器(minikube的nginx),并已成功启用入口: minikube addons enable ingress 然后我按照教程中的步骤操作: 步骤1:部署一个nginx服务器(SUCCESSFUL) kubectl run nginx –image=nginx –port=80 步骤2a:将您的nginx部署公开为内部服务(SUCCESSFUL) kubectl expose deployment nginx –target-port=80 –type=NodePort 步骤2b:validation服务是否可用: kubectl get service nginx 输出: NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx 10.0.0.170 <nodes> 80:31635/TCP 7s 从上面,我知道服务创build正确… 第3步:创build一个入口资源(SUCCESSFUL) Ingress config […]

如何configurationnginx入口资源超时参数

所以这里是我的问题,我想在Kubernetes入口资源3超时参数中设置。 Kubernetes文档中描述的方法是使用入口资源注释或ConfigMap。 在下面的示例中,我尝试使用注释,但由于未知原因,更改未生效。 nginx.org/proxy-connect-timeout: 10s nginx.org/proxy-read-timeout: 10s nginx.org/proxy-send-timeout: 10s 我在入口资源定义中设置这些参数: kind: Ingress metadata: name: my-foobar-ingress namespace: foobar annotations: nginx.org/proxy-send-timeout: "10s" nginx.org/proxy-connect-timeout: "10s" nginx.org/proxy-read-timeout: "10s" spec: rules: – host: foobar.foo.bar http: paths: – backend: serviceName: foobar-svc servicePort: 8080 path: / 另一种设置nginxconfiguration的方法是通过一个ConfigMap,但我不想全局做,所以我需要使用注释来完成。

nginx proxy_pass导致404 Not Found页面

我有一个angular色的应用程序运行在一个docker Ubuntu的镜像,安装了nginx。 我想将这个映像部署到Kubernetes,并使用nginx代理将所有调用redirect到/ api到Kubernetes中的后端服务。 我的静态网页资源位于/ var / www / html,并将以下configuration添加到/etc/nginx/conf.d: upstream backend-service { server backend-service:8080; } server { listen 80; location / { try_files $uri $uri/ /index.html; } location ^~ /api { proxy_pass http://backend-service; } } 在/或/#/ dashboard上访问前端服务会返回我的Angular页面的预期组件,但是调用/ api / v1 / data只会显示默认的nginx 404 Not Found页面 。 我需要修改我的后端调用redirect到我的后端? 我在ubuntu 16.04上使用nginx 1.10.3 ,我的前端Dockerfile如下所示: FROM ubuntu:16.04 # […]

需要带有SSL教程的Kubernetes 1.2 Ingress裸机控制器

我可以find最接近的教程,获取SSL终止Ingress和基于nginx的控制器运行在裸机上(例如Digital Ocean): https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx 但是它留下了太多假设无法解释的东西。 我的入口要求很简单: 所有主机的端口80默认后端: 文件访问location ^~ /.well-known/acme-challenge/它允许我的LetsEncrypt证书续订工作 404 location /.well-known/acme-challenge/ 301 location / 基于子域的路由到端口443上的不同后端服务 每个子域指向一个不同的SSL密钥/证书(由我的LetsEncrypt生成,并存储在K8S作为一个秘密,我想??) 我认为需要的是这样的: 有关编写Ingress规则的完整文档 我可以为每个后端单独configurationSSL证书(在端口443上)吗? 是/主机的“path”吗? 更新Ingress规则 我用什么nginx控制器? nginx的? nginx的-α? nginx入口docker集装箱 – 哪里是每个这些控制器的文档? 有没有一个基础控制器映像,我可以覆盖nginx.conf模板,从API服务器的入口更改填充? 你如何将SSL密钥和证书存储为秘密?

在Kubernetes中,DNS不能通过NGINXparsing

我有一个Kubernetes集群,我用kube-aws设置。 我试图运行一个自定义NGINXconfiguration使用DNSparsing到proxy_pass。 这是NGINX代码块 location /api/v1/lead { resolver 10.3.0.10 ipv6=off; set $container lead-api; proxy_pass http://$container:3000; } 10.3.0.10来自Kubernetes中的DNS服务的集群IP。 我也试过127.0.0.11,这是我们在docker-compose / docker环境中使用的。 $ kubectl describe –namespace=kube-system service kube-dns Name: kube-dns Namespace: kube-system Labels: k8s-app=kube-dns kubernetes.io/cluster-service=true kubernetes.io/name=KubeDNS Selector: k8s-app=kube-dns Type: ClusterIP IP: 10.3.0.10 Port: dns 53/UDP Endpoints: 10.2.26.61:53 Port: dns-tcp 53/TCP Endpoints: 10.2.26.61:53 Session Affinity: None 这种configuration在使用docker-compose的三个不同的环境中工作良好。 但是,我在Kubernetes集群的NGINX日志中出现以下错误 [error] […]

使用Kubernetes Ingress资源显示具有多个IP的多个后端

作为kubernetes / ingress存储库的示例之一,我通过一个nginx控制器公开了一个带有静态IP和Ingress的服务。 我有第二个LoadBalancer服务,这不是任何Ingress资源pipe理,不能再为第一个服务添加新的资源后(我不明白为什么是这样的情况下)后不适当暴露。 我试图添加第二个Ingress和LoadBalancer服务来分配第二个静态IP,但我不能让它工作。 我怎么去暴露第二个服务,最好是用Ingress? 我是否需要添加第二个Ingress资源,还是必须重新configuration我已有的资源?

最好的Kubernetes Nginx架构

我希望能遵循这个架构: -> service 1 -> nginx -> service 2 -> service 3 我想使用nginx(而不是使用kube-proxy的默认kube服务)的原因是它有x-accel-redirects,这对validation非常有用。 通常情况下,nginx和所有三个服务将在不同的盒子上。 与Kubernetes,我试图find构build这个最好的方式。 我知道有一种方法可以通过模拟服务代理来实现 ,但是这看起来像是一种非常简单的方法。 我正在考虑让nginx和所有这三个服务成为一个kube服务,所以stream量就是这样 – > kube-proxy – > nginx – > kube-proxy – >服务1,2,3 和nginxconfiguration看起来像 upstream backend { server backend1.example.com; # with skydns name, or the service ip which is static } server { location / { proxy_pass http://backend; } […]

使用代理协议的kubernetes nginx入口最终以损坏的标题结束

我尝试在代理协议的谷歌容器上设置nginx入口(nodeport),以便真正的IP可以被转发到后端服务,但结束了与头破碎。 2017/02/05 13:48:52 [error] 18#18: *2 broken header: " ~ ]H k m[| I iv. {y Z 嵦v Ȭq 2Iu4P z; o$ s " + / , 0̨̩ /" while reading PROXY protocol, client: 10.50.0.1, server: 0.0.0.0:443 如果没有代理协议,事情运作良好。 根据https://blog.mythic-beasts.com/2016/05/09/proxy-protocol-nginx-broken-header/这是由于协议v2使用(二进制),但nginx只能说v1 。 任何build议?