1. ingress的部署方
官方简介在https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md,
执行如下命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
执行如下代码检查部署情况
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch
安装完成后,执行如下命令检查ingress版本号
POD_NAMESPACE=ingress-nginx
POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}')
kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version
之后在https://github.com/kubernetes/ingress-nginx/releases下载对应版本的代码
2. 启动ingress pod:
进入ingress-nginx-nginx-0.22.0/deploy目录,执行kubectl create -f mandatory.yaml
3. 建立映射规则:
创建映射文件ingress-echoheaders.yaml,其中需要根据映射的服务修改name、serviceName、servicePort,服务可以通过kubectl get svc --all-namespaces查询
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-echoheaders
annotations:
# use the shared ingress-nginx
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: echoheaders.test.com
http:
paths:
- path: /
backend:
serviceName: echoheaders
servicePort: 80
执行kubectl create -f ingress-echoheaders.yaml
执行kubectl get ingresses.extensions即可检查到映射关系
4. 创建ingress服务:
进入ingress-nginx-nginx-0.21.0/deploy/provider/baremetal,修改service-nodeport.yaml文件,加入externalIPs,并设置为需要指定的虚拟ip,注意此IP应与node处于同一网段,并且没有被占用
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:
externalIPs:
- 10.66.66.66
type: NodePort
ports:
- name: http
port: 80
targetPort: 80
protocol: TCP
- name: https
port: 443
targetPort: 443
protocol: TCP
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
5. ingress搭建完成如下所示:
[root@node33 ~]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx NodePort 10.233.10.206 10.66.66.66 80:32361/TCP,443:30510/TCP 81m
[root@node33 ~]# kubectl get ingresses.extensions
NAME HOSTS ADDRESS PORTS AGE
ingress-echoheaders echoheaders.test.com 10.66.66.66 80 3d3h
最后在同网段的任意一台服务器上,对/etc/hosts文件进行修改,增加
10.66.66.66 echoheaders.test.com
执行curl echoheaders.test.com即可看到效果