使用CentOS7在本地为Kubernetes群集安装nginx入口

使用CentOS7在本地为Kubernetes群集安装nginx入口,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我不确定哪个安装部分与CentOS7内部集群相关 在下面的链接中 我试图通过helm chart安装,但是使用type=LoadBalance创建的服务,尽管集群不在云上 我的问题是: Helm是安装Nginx的唯一选项,而不是出于可能(或者裸机在我的情况下是正确的) 如果是舵,安装舵时应覆盖哪些参数(服务类型等) 谢谢如果您想使用Type=LoadBalancer,我建议您安装 MetalLB是裸机Kubernetes群集的负载平衡器实现,使用标准路由协议 为什么? Kubernetes没有

我不确定哪个安装部分与CentOS7内部集群相关 在下面的链接中

我试图通过helm chart安装,但是使用type=LoadBalance创建的服务,尽管集群不在云上

我的问题是:

Helm是安装Nginx的唯一选项,而不是出于可能(或者裸机在我的情况下是正确的)

如果是舵,安装舵时应覆盖哪些参数(服务类型等)


谢谢

如果您想使用
Type=LoadBalancer
,我建议您安装

MetalLB是裸机Kubernetes群集的负载平衡器实现,使用标准路由协议

为什么?

Kubernetes没有为裸机集群提供网络负载平衡器(LoadBalancer类型的服务)的实现。Kubernetes提供的网络LB的实现都是调用各种IaaS平台(GCP、AWS、Azure…)的粘合代码。如果您没有在受支持的IaaS平台(GCP、AWS、Azure…)上运行,则负载平衡器在创建时将无限期地保持“挂起”状态

裸机集群运营商只剩下两个较小的工具将用户流量引入其集群,“NodePort”和“externalIPs”服务。这两种选择对生产使用都有很大的不利影响,这使得裸机集群成为Kubernetes生态系统中的二等公民

MetalLB旨在通过提供与标准网络设备集成的网络LB实现来纠正这种不平衡,以便裸机集群上的外部服务也尽可能“正常工作”


安装指南是

使用头盔,您可以将
控制器.服务.类型
设置为
节点端口
。这样,对于nginx入口控制器,将创建一个服务,您可以使用NodeIP和NodePort通过创建来访问后端kubernetes服务


话虽如此,helm chart中并没有为它在裸机上工作提供默认配置。所以你需要尝试几次。否则,您可以使用为其提供的使用NodePort的标准yaml。

在裸机安装中无法使用
入口。默认情况下,您需要使用MetalLB

Nginx展示了如何设置metalb以允许裸机集群使用负载平衡器服务

为不在受支持的云提供商上运行的Kubernetes群集提供网络负载平衡器实现,有效地允许在任何群集内使用负载平衡器服务

基本上,设置很简单:

kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.3/manifests/metallb.yaml
然后创建一个ConfigMap来配置: -根据您的网络编辑ip范围

安装和配置MetalLB后,可以按照以下步骤安装Nginx入口:

然后:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/baremetal/service-nodeport.yaml
如果您愿意,您可以使用:

helm安装my nginx stable/nginx ingress

如果kubernetes群集已启用RBAC,则运行:

helm install my nginx stable/nginx incress——设置rbac.create=true

如果正在使用,则使用
--name
标志指定发布名称

helm install stable/nginx ingress——命名我的nginx

helm install stable/nginx ingres——命名my nginx——设置rbac.create=true

检测已安装的版本:

POD_NAME=$(kubectl get pods-l app.kubernetes.io/NAME=ingres nginx-o jsonpath='{.items[0].metadata.NAME}')
kubectl exec-it$POD_名称--/nginx入口控制器--版本

参考文献:


我找到了通过helm chart为裸机安装nginx的方法:

舵安装idit nginx稳定/nginx入口 --名称空间kube系统 --设置controller.service.type=NodePort
--设置controller.image.pullPolicy=IfNotPresent
--1.33.1版

感谢您的帮助。Centos被认为是裸机?
$ kubectl get pods -n metallb-system
NAME                          READY   STATUS    RESTARTS   AGE
controller-65895b47d4-6wzfr   1/1     Running   0          9d
speaker-v52xj                 1/1     Running   0          9d
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/baremetal/service-nodeport.yaml