在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 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐