美文网首页
Ingress Nginx 试用

Ingress Nginx 试用

作者: 何约什 | 来源:发表于2018-07-18 14:15 被阅读774次

安装ingress-nginx

[root@bogon:~/k8s/ingress/ingress-nginx# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml]
[namespace "ingress-nginx" created](interm)

[deployment "default-http-backend" created](interm)

[service "default-http-backend" created](interm)

[configmap "nginx-configuration" created](interm)

[configmap "tcp-services" created](interm)

[configmap "udp-services" created](interm)

[serviceaccount "nginx-ingress-serviceaccount" created](interm)

[clusterrole "nginx-ingress-clusterrole" created](interm)

[role "nginx-ingress-role" created](interm)

[rolebinding "nginx-ingress-role-nisa-binding" created](interm)

[clusterrolebinding "nginx-ingress-clusterrole-nisa-binding" created](interm)

[deployment "nginx-ingress-controller" created](interm)

[root@bogon:~/k8s/ingress/ingress-nginx# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

安装完成后,查看一下ingress-nginx相关的组件的创建情况:

root@bogon:~/k8s/ingress/ingress-nginx# kubectl get pods -n ingress-nginx 
NAME                                        READY     STATUS              RESTARTS   AGE
default-http-backend-55c6c69b88-rfq4n       0/1       ContainerCreating   0          29s
nginx-ingress-controller-7cc74ccd44-h827j   0/1       ContainerCreating   0          28s

从上图中看出nginx-ingress-controller和default-http-backend两个组件都正在创建,间隔一段时间,继续观察,知道Pod处于运行状态

root@bogon:~/k8s/ingress# kubectl get pods -n ingress-nginx 
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-55c6c69b88-rfq4n       1/1       Running   1          6d
nginx-ingress-controller-7cc74ccd44-h827j   1/1       Running   1          6d

到现在为止,说明整个ingress-nginx的组件已经全部启动,查看相应的组件:

root@bogon:~/k8s/ingress# kubectl get service -n ingress-nginx                    
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default-http-backend   ClusterIP   10.111.66.202    <none>        80/TCP                       6d
ingress-nginx          NodePort    10.98.149.237    <none>        80:31230/TCP,443:30458/TCP   6d

验证服务安装的服务的可用性,系统自动安装了一个default-http-backend,这是一个缺省的http后端服务,用于返回404结果,如下所示:

default backend - 404root@bogon:~/k8s/ingress# kubectl get service ingress-nginx -n ingress-nginx   
NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.98.149.237   <none>        80:31230/TCP,443:30458/TCP   6d
root@bogon:~/k8s/ingress# curl http://10.98.149.237:80
default backend - 404root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# curl http://127.0.0.1:31230
default backend - 404root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 

从上文中,可以看出ingress-nginx是一个NodePort Servide,它除了向集群内部暴漏ClusterIP:Port为10.98.149.237:80 ,同时还会向集群外部在每个节点上暴漏31230端口。

创建一个应用以及相应服务

准备好Pod和Service的配置文件 nginx.yaml

---

apiVersion: v1
kind: Pod
metadata:
 name: nginx
 namespace: ingress-nginx
 labels:
   app: web
spec:
 hostNetwork: false
 containers:
   - name: nginx
     image: nginx

---

kind: Service
apiVersion: v1
metadata:
  name: my-service
  namespace: ingress-nginx
spec:
  selector:
    app: web
  ports:
  - protocol: TCP
    port: 1005
    targetPort: 80

创建nginx pod以及my-service服务:

kubectl apply -f nginx.yaml
root@bogon:~/k8s/ingress# kubectl get service my-service -n ingress-nginx
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
my-service   ClusterIP   10.111.173.60   <none>        1005/TCP   2m
nginx-ingress-controller-7cc74ccd44-h827j   1/1       Running   1          6d
root@bogon:~/k8s/ingress# kubectl get pod nginx -n ingress-nginx  
NAME      READY     STATUS    RESTARTS   AGE
nginx     1/1       Running   0          2m

验证服务是否可用:

root@bogon:~/k8s/ingress# curl http://10.111.173.60:1005
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

创建ingress服务

准备好test-ingress.yaml文件

root@bogon:~/k8s/ingress# cat test-ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
  namespace: ingress-nginx
spec:
  rules:
  -  host: foo.bar.com
     http:
      paths:
      - path: /
        backend:
          serviceName: my-service
          servicePort: 1005

验证ingress反向代理服务:

root@bogon:~/k8s/ingress# curl http://127.0.0.1:31230 
default backend - 404root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# 
root@bogon:~/k8s/ingress# curl -H "Host: foo.bar.com" http://127.0.0.1:31230/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

相关文章

网友评论

      本文标题:Ingress Nginx 试用

      本文链接:https://www.haomeiwen.com/subject/ymogpftx.html