Kubernetes:Ingress-Nginx-Controller配置
1、下载YML配置文件本文编写时github上nginx-ingress最新版本是0.26.1github上的配置文件地址:https://github.com/kubernetes/ingress-nginx/tree/nginx-0.26.1/deploy/static(0.20.0版本之前的文件在上一级deploy目录里)下载红圈标注的文件,或者直接创建yml文件点进去复制就行。再...
1、下载YML配置文件
本文编写时github上nginx-ingress最新版本是0.26.1
github上的配置文件地址:https://github.com/kubernetes/ingress-nginx/tree/nginx-0.26.1/deploy/static(0.20.0版本之前的文件在上一级deploy目录里)
下载红圈标注的文件,或者直接创建yml文件点进去复制就行。
再或者系统直接执行命令:
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
2、部署配置文件
不需要修改yml,一般正常执行之后运行起来了,但是里面有一个镜像,一般没法pull下来。
image:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1
(0.20.0版本之前还有一个镜像)
image: gcr.io/google_containers/defaultbackend:1.4
所以提前在Node节点使用阿里云的谷歌镜像上pull下来。
image:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1
打上tag。
docker tag registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1
或者直接修改mandatory.yml文件把image那行镜像地址替换成上面阿里云的镜像地址。
执行命令:kubectl apply -f mandatory.yaml
kubectl get all -n ingress-nginx查看一下运行情况,正常执行ingress-nginx-controller就部署完成了。
3、部署ingress-nginx service对外提供服务(NodePort方式)
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml
获取部署文件。
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
nodePort: 80
- name: https
port: 443
targetPort: 443
protocol: TCP
nodePort: 443
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
---
发现需要占用80和443端口,k8s的NodePort默认只允许30000-40000的端口范围,需要去去apiserver中修改端口范围。因为k8s安装方式不一样,修改apiserver的配置方式也不一样,网上有修改教程,这里不做赘述。
执行命令:kubectl apply -f service-nodeport.yaml
服务就启动了。
EP:之前想用hostNetwork方式部署的但是在mandatory.yaml的deployment中配置了
hostNetwork: true
之后pod老是crashloopbackoff启动不起来,所以只好用nodeport方式部署。
4、配置igress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: 起个名字
spec:
rules:
- host: 你的网址.com
http:
paths: /总的路径前缀
- path: /服务的路径前缀
backend:
serviceName: k8s中Service服务的名字
servicePort: k8s中Service服务的暴露的端口
kubectl apply -f 执行一下。
host文件中添加:
192.X.X.X www.xxx.com
前面为你的kubernetes中随便一个node的ip,后面为你ingress中定义的网址。
在浏览器输入网址就能访问你的服务了。
更多推荐
所有评论(0)