你好kubernetes专家,
我有一个kubernetes集群在4个覆盆子pis上运行,docker 18.04ce和kubernetes 1.9.7 .
我部署了一项服务,可以通过集群IP从集群内访问此服务 . 我还在https://docs.traefik.io/user-guide/kubernetes/和How to get Kubernetes Ingress Port 80 working on baremetal single node cluster中描述了一个入口,作为基于入口控制器服务的DaemonSet . DaemonSet还设置了NET_BIND_SERVICE,它应该实现主机正在侦听与服务相同的端口 .
一切都像描述的那样工作但我的入口不会在主机端口80上侦听 . 不知何故,设置NET_BIND_SERVICE不能按预期工作 . 有谁知道如何解决这个问题?
如果我将入口控制器部署为使用NodePort而不是作为DaemonSet进行部署,那么它可以工作,但这限制了我为kubernetes允许为NodePorts分配的端口 .
https://hackernoon.com/kubernetes-ingress-controllers-and-traefik-a32648a4ae95告诉入口DaemonSet的hostPort无法使用CNI网络插件(我用法兰绒和编织测试),但Kubernetes @ RaspberryPI网站(如https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/)告诉它可行,所以这个问题应该解决 .
在此先感谢亨氏
1 回答
我找到了一个配置,基于traefik的入口如何在我的Raspberry Pi集群中使用docker 18.04CE,kubernetes 1.9.7和2018-06-27-raspbian-stretch-lite.img:
使用https://docs.traefik.io/user-guide/kubernetes/中的DaemonSet定义,特别是yaml文件https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-ds.yaml
但您必须将hostNetwork:true添加到DaemonSet的规范中,并键入:ClusterIP到服务的规范 .
我工作的yaml如下:
根据kubernetes文档,ClusterIP是服务类型的默认值 . 但是我的样本只有在我明确地将类型:ClusterIP添加到支持入口控制器的服务时才有效 .
我还检查了它是否有效,如果我只将“hostNetwork:true”添加到DeamonSet的spec.template.spec或“type:ClusterIP”到服务的规范,但它只有在我添加两者时才有效 .