我在 GCP 上使用 k8s。需要设置入口来设置 TLS 连接,所以我为我的应用程序设置了入口,它有效!!!
顺便说一句,什么是入口控制器,就像Nginx 入口控制器?
我确信入口创建新的负载均衡器并通过 http 请求提供应用程序服务。但是设置 nginx 控制器有什么意义,您可以使用注释为 nginx 设置小配置。
我从github做了nginx入口控制器教程并公开了kubernetes仪表板
kubernetes-dashboard NodePort 10.233.53.77 <none> 443:31925/TCP 20d
Run Code Online (Sandbox Code Playgroud)
创造了入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
nginx.org/ssl-backends: "kubernetes-dashboard"
kubernetes.io/ingress.allow-http: "false"
name: dashboard-ingress
namespace: kube-system
spec:
tls:
- hosts:
- serverdnsname
secretName: kubernetes-dashboard-certs
rules:
- host: serverdnsname
http:
paths:
- path: /dashboard
backend:
serviceName: kubernetes-dashboard
servicePort: 443
Run Code Online (Sandbox Code Playgroud)
ingress-nginx ingress-nginx NodePort 10.233.21.200 <none> 80:30827/TCP,443:32536/TCP 5h
Run Code Online (Sandbox Code Playgroud)
https:// serverdnsname:32536 /仪表板 但仪表板抛出错误
2018/01/18 14:42:51 http: TLS handshake error from ipWhichEndsWith.77:52686: tls: first record does not look like a TLS handshake
Run Code Online (Sandbox Code Playgroud)
和入口控制器日志
2018/01/18 14:42:51 …Run Code Online (Sandbox Code Playgroud) 首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer 上测试了教程
这工作正常。我还测试了相同的教程,但也添加了一个 tls 秘密来测试 https,它也运行良好。
当我创建自己的图像时,我的问题就出现了。这是我采取的步骤:
# 我们将我们的舞台标记为“builder”
FROM node:9.4.0-alpine 作为构建器
复制 package.json package-lock.json ./
## 将节点模块存储在单独的层上将防止在每次构建时安装不必要的 npm
运行 npm i && mkdir /srv/cs-ui && cp -R ./node_modules ./srv/cs-ui
工作目录 /srv/cs-ui
复制 。.
## 在生产模式下构建 angular 应用程序并将工件存储在 dist 文件夹中
运行 $(npm bin)/ng build --environment "prod"
从 nginx
## 复制我们的默认 nginx 配置
复制 nginx/default.conf /etc/nginx/conf.d/
##删除默认的nginx网站
运行 rm -rf /usr/share/nginx/html/*
## 从“builder”阶段将 dist 文件夹中的工件复制到默认的 nginx nginx 公共文件夹
复制 --from=builder /srv/cs-ui/dist /usr/share/nginx/html/
版本:'2' 服务: …
google-cloud-platform kubernetes google-kubernetes-engine docker-ingress
我有一个小型计算机网络,捆绑到一个 Docker 群中。我正在运行一个需要主机网络的服务,当它在专用节点上运行时就很好了。
但我想让它在任何节点上运行 - 同时保持通过连接到固定主机名/IP 地址来访问其 Web UI 的能力,无论服务实际运行在哪个节点上。
这通常由 docker 的入口网络处理,它允许我连接到任何节点 IP 地址上的已发布端口,并将连接路由到正确的节点。但是,显然这不适用于主机网络,如果我明确指定入口网络,它会被拒绝。
那么,有没有一种方法既可以拥有主机网络,又可以保留入口路由?或者让我连接到服务而不用担心它在任何给定时刻运行在哪个节点上的推荐方法是什么?
编辑:
我的堆栈文件如下:
version: '3'
services:
app:
image: ghcr.io/home-assistant/home-assistant:stable
volumes:
- ...
privileged: true
deploy:
replicas: 1
restart_policy:
condition: any
placement:
constraints:
- node.hostname==nas
networks:
- host
networks:
host:
external: true
Run Code Online (Sandbox Code Playgroud) 我正在尝试将IP列入白名单以访问Kubernetes集群中的部署。
我在网上寻找了一些与此有关的文档,但我只发现了
ingress.kubernetes.io/whitelist-source-range
Run Code Online (Sandbox Code Playgroud)
允许入口授予某些IP范围的访问权限。但是,我仍然无法隔离部署。
这是入口配置YAML文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-internal
annotations:
kubernetes.io/ingress.class: "istio"
ingress.kubernetes.io/whitelist-source-range: "xxx.xx.xx.0/24, xx.xxx.xx.0/24"
spec:
rules:
- host: white.example.com
http:
paths:
- backend:
serviceName: white
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
我可以从列入白名单的IP和移动电话(未在配置中列入白名单的IP)访问部署
有人使用Ingress和Istio解决了相同的问题吗?
任何帮助,提示,文档或替代配置将不胜感激。
whitelist kubernetes docker-ingress istio kubernetes-security
我在玩 Docker swarm,
我有一个三节点集群、1 个管理器和 2 个工作节点。我正在使用VIP我的所有服务。
我有一个奇怪的情况,我重新启动了工作节点。
我执行docker node ls了,工作节点是Ready.
docker service ls会告诉我工人中容器的复制很好。
问题:我无法通过入口网络加入节点。其他节点中的容器无法访问该工作节点中的容器。
我检查了它们都加入入口网络的容器。
我从同一个节点内卷曲容器,他们做出了回应。
我从容器 ping 服务名称(在同一个故障节点中)并且它工作正常。
我从经理那里卷曲了工人容器中的工人容器不起作用!
我蜷缩着工人的 IP 地址,他们回应了。
我重新启动了工作节点,但问题仍然存在,然后我重新启动了整个集群,它再次运行了!
对我刚刚目睹的事情有什么解释吗?
我最担心这会发生在生产环境中。
先感谢您。
全部。我正在学习 Docker。但仍然找不到任何关于 Docker ingress 网络如何连接多个独立主机的文档。
我在不同的数据中心有 2 个虚拟机,想要在它们上创建 swarm 集群。默认安装的入口网络是否有可能使 vm1 上的容器对某个覆盖网络内 vm2 上的容器可见?或者 vm1 和 vm2 应该位于同一个本地网络中?