「Kubernetes」- 部署NGINX Ingress Controller组件 @20210125

内容简介

本文介绍如何部署NGINX Ingress Controller组件。

注意事项

在参照官方「Installation Guide」文档并结合自身需求后,我们整理出此文。我们强烈建议参照官方文档并结合自己的环境进行部署。

系统环境

  
系统环境: CentOS Linux release 7.4.1708 (Core)
软件版本: Kubernetes v1.12.1
  Docker version 18.06.1-ce, build e68fc7a
  Helm v3.0.0-beta.3
网络信息: k8s-master[1-3]:10.10.50.91 - 93
  node[1-6]:10.10.50.81 - 86
  VIP:10.10.50.90

# 部署过程(适用于我们的环境)

# 附加说明

1)在默认配置中,会监视在所有命名空间中的Ingress对象。如果要改变这个行为,需要指定--watch-namespace选项,来限制到特定命名空间。
2)如果为同个主机名定义多个不同路径,则Ingress Controller将合并定义。

第一步、常规部署

我们按自己需求定制「mandtory.yaml」配置文件,并应用:

#!/bin/sh

kubectl apply -f mandatory.yaml

第二步、环境特定

在minikube、AWS、Azure中,需要执行不同的命令(详细参考官方「Installation Guide」文档)。

在自建Kubernetes集群中,需要执行如下命令:

#!/bin/sh

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml

第三步、查看状态

查看NGINX Ingress Controller组件的状态:

#!/bin/sh

kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch

第四步、定义资源进行测试

当部署NGINX Ingress Controller组件部署完成时,可以定义Ingress、Server、Deployment资源进行验证。

(1)定义资源文件(example.yaml),并应用:

#!/bin/sh

kubectl apply -f example.yaml

(2)绑定HOST域名,然后在浏览器中访问。(详细过程略过)。

# 附加说明(重要)

部署Ingress Controller时,不建议使用DaemonSet类型,而应该使用Deployment类型,然后将POD示例固定在某个节点上。为什么?假如你的集群有1000个节点时…………

# 简单管理

#!/bin/sh

kubectl exec -it -n <namespace-of-ingress-controller> nginx-ingress-controller-67956bf89d-fv58j cat /etc/nginx/nginx.conf

kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version

相关连接

GitHub/nginxinc/kubernetes-ingress
GitHub/nginxinc/kubernetes-ingress/deployments/

参考文献

 

 


posted @ 2021-01-25 08:47  研究林纳斯写的  阅读(237)  评论(0编辑  收藏  举报