你好kubernetes专家,
我有一个kubernetes集群,它运行在4个raspberry PI上,docker 18.04ce和kubernetes 1.9.7。
我部署了一个服务,可以通过集群IP从集群内访问此服务。我还部署了一个入口,如https://docs.traefik.io/user-guide/kubernetes/和如何让库伯内特斯IngresPort 80在裸机单节点集群上工作,作为基于入口控制器服务的DaemonSet中所述。DaemonSet还有NET_BIND_SERVICE集,它应该实现主机在与服务相同的端口上侦听。
一切正常,但我的入口不监听主机端口80。不知何故,设置NET\u BIND\u服务无法按预期工作。有人知道如何解决这个问题吗?
如果我将入口控制器部署为带有节点端口的部署,而不是守护程序,那么它可以工作,但这将我限制在端口kubernetes,允许为节点端口分配。
https://hackernoon.com/kubernetes-ingress-controllers-and-traefik-a32648a4ae95说明入口守护程序的主机端口不适用于CNI网络插件(我使用flannel和weave进行了测试),但Kubernetes@RaspberryPI站点(如https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/)告诉我它是有效的,所以这个问题应该得到解决。
提前谢谢Heinz
我找到了基于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:true添加到守护程序的规范中,并将type:ClusterIP添加到服务的规范中。
我的工作职责如下:
---
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是服务类型的默认值。但我的示例只有在向支持入口控制器的服务显式添加type:ClusterIP时才起作用。
我还检查了如果我只将“host Network: true”添加到DeamonSet的spec.template.spec或“type: ClusterIP”添加到服务规范中是否有效,但只有当我同时添加两者时才有效。
问题内容: 我在运行RHEL7的Amazo EC2实例上运行elasticsearch 1.4和kibana4。 Kibana4作为独立进程运行,未部署在诸如nginx之类的Web容器中,它正在侦听端口5601(默认端口)。我想让kibana在80端口监听。 是否可以不使用nginx来实现?如果是,怎么办? 问题答案: 编辑文件{kibana-directory} /config/kibana.y
本文向大家介绍如何用Node监听80端口?相关面试题,主要包含被问及如何用Node监听80端口?时的应答技巧和注意事项,需要的朋友参考一下 这题有陷阱!在类Unix系统中你不应该去监听80端口,因为这需要超级用户权限。因此不推荐让你的应用直接监听这个端口。 目前,如果你一定要让你的应用80端口的话,你可以有通过在Node应用的前方再添加一层反向代理(例如nginx)来实现,如下图。否则,建议你直接
我可以从外部通过域名导航到我的集群,并看到具有有效HTTPS的控制面板(在15672内部)。所以入口已经启动并运行,我可以创建队列等等。因此rabbitmq工作正常。 但是,我无法使TCP部分工作,以便从集群外部发布到队列。 我已经通过azure portal接口为控制器(nginx-ingress-ingress-nginx-controller)编辑了我认为是configmap(azure-c
我有一个用kubeadm创建的裸机kubernetes(
问题内容: 我创建并启动一个这样的应用程序: 并且可以正常工作(在端口3000上)。但是,当我将端口更改为80时,运行输出如下: 这在我的笔记本电脑上也有效,但在端口80打开的Amazon EC2实例上无效。可以找出问题所在。有小费吗? 问题答案: 您是否以root用户身份启动应用程序?因为较低的端口号需要root特权。也许sudo节点app.js可以工作吗? 但是,您不应使用root用户特权在端
本文档最初是基于kubenetes1.6版本编写的,对于kuberentes1.8及以上版本同样适用,只是个别位置有稍许变动,变动的地方我将特别注明版本要求。 本系列文档介绍使用二进制部署 kubernetes 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群,同时开启了集群的TLS安全认证,该安装步骤适用于所有bare metal环境、on-premise环境和公有云环境。 如