将入口部署为在 Raspberrypi Kubernetes 集群上的端口 80 上侦听的演示集需要什么



你好 kubernetes 专家,

我有一个在 4 个树莓派上运行的 kubernetes 集群,其中包含 docker 18.04ce 和 kubernetes 1.9.7。

我部署了一个服务,可以通过群集 IP 从群集内访问此服务。 我还部署了一个入口,如 https://docs.traefik.io/user-guide/kubernetes/和如何让 Kubernetes 入口端口 80 在裸机单节点集群上工作,作为基于入口控制器服务的守护程序集。守护程序集还具有NET_BIND_SERVICE集,该集应实现主机侦听与服务相同的端口。

一切都像描述的那样工作,但我的入口不侦听主机端口 80。不知何故,设置NET_BIND_SERVICE无法按预期工作。 有谁知道如何解决这个问题?

如果我将入口控制器部署为 NodePort 的部署而不是守护程序集,它可以工作,但这限制了我使用 kubernetes 允许为 NodePort 分配的端口。

https://hackernoon.com/kubernetes-ingress-controllers-and-traefik-a32648a4ae95 告诉入口守护程序集的 hostPort 不适用于 CNI 网络插件(我用法兰绒和编织进行了测试(,但Kubernetes@RaspberryPI站点(如 https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/(告诉它有效,因此应该解决这个问题。

提前致谢 亨

我发现了一个配置,基于 traefik 的入口如何在我的 Raspberry Pi 集群上使用 docker 18.04CE、kubernetes 1.9.7 和 2018-06-27-raspbian-stretch-lite.img 工作:

使用 https://docs.traefik.io/user-guide/kubernetes/中的守护程序集定义,特别是 yaml 文件 https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-ds.yaml

你必须添加 hostNetwork:忠于守护程序集的规范 和 类型:群集 IP 到服务的规范。

我的工作 yaml 如下:

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
---
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress-controller
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
hostNetwork: true
containers:
- image: traefik
name: traefik-ingress-lb
ports:
- name: http
containerPort: 80
hostPort: 80
- name: admin
containerPort: 8080
hostPort: 8080
securityContext:
capabilities:
drop:
- ALL
add:
- NET_BIND_SERVICE
args:
- --api
- --kubernetes
- --logLevel=DEBUG
---
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
namespace: kube-system
spec:
type: ClusterIP
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
- protocol: TCP
port: 8080
name: admin

根据 kubernetes 文档,ClusterIP 是服务类型的默认值。但是,仅当我将类型:ClusterIP 显式添加到支持入口控制器的服务时,我的示例才有效。

我还检查了如果我只将"hostNetwork:true"添加到DeamonSet的spec.template.spec或"type:ClusterIP"到服务的规范中,它是否有效,但它只有在我添加两者时才有效。

相关内容

  • 没有找到相关文章

最新更新