k8s部署ingress-controller并搭建相关ingress简单应用
在k8s集群中,对于服务有ClusterIP,NodePort和LoadBalancer。当我们没有公网ip的时候,如果我们需要对外服务更多使用的是NodePort。然而当服务逐渐躲起来的时候,NodePort对于端口的规划则变得相对麻烦,这个时候我们则可以使用Ingress。而使用Ingress的前提是先部署好Ingress-Controller。环境:服务器系统:centos7.5*3dock
在k8s集群中,对于服务有ClusterIP,NodePort和LoadBalancer。当我们没有公网ip的时候,如果我们需要对外服务更多使用的是NodePort。然而当服务逐渐躲起来的时候,NodePort对于端口的规划则变得相对麻烦,这个时候我们则可以使用Ingress。而使用Ingress的前提是先部署好Ingress-Controller。
环境:
服务器系统:centos7.5*3
docker版本:19.03.8
k8s版本:1.18.3
部署过程
1.获取官网yaml文件-官方文档
wget https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/mandatory.yaml
2.修改yaml文件内容
①新增hostNetwork: true
②修改镜像地址,原文件是国外镜像,可能拉取失败
③如果是生产环境要求高可用,还可以把deployment修改为DaemonSet,去掉replica
3.部署ingress-controller
kubectl apply -f mandatory.yaml
4.验证-等待运行
kubectl get pod -n ingress-nginx
5.部署测试应用nginx
略(随便部署一个nginx应用即可)
6.待ingress-nginx的pod正常运行以后,查看pod所在node节点(如果是DaemonSet则不用)
kubectl get pod -n ingress-nginx -o wide
7.部署ingress
kubectl apply -f ingress_http.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: www.opesn.com
#namespace: xxxxx
spec:
rules:
- host: www.opesn.com
http:
paths:
- path: /
backend:
serviceName: test
servicePort: 80
注释:name可改可不改;namespace保持与要访问的应用在同一个namespace下;host填写你自定义的域名;serviceName是你要访问的应用服务名;servicePort则是服务的内部端口
8.把ingress-controller所在节点(步骤6查询结果)注册到/etc/hosts
echo “xxx.xxx.xxx.xxx www.opesn.com” >> /etc/hosts
9.访问应用验证
curl -I www.opesn.com
更多推荐
所有评论(0)