ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes部署Ingress

2021-11-16 17:01:44  阅读:158  来源: 互联网

标签:Ingress name Kubernetes 访问 部署 ingress nginx yaml myapp


Ingress基本概念

通俗来讲,ingress和Service、Deployment,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。

通过用户访问的 URL,把请求转发给不同的后端 Service。这种全局的,为了代理不同后端Service而设置的负载均衡服务,就是Kubernetes里的Ingress服务。

client  >  负载均衡(nginx) > ingress  > service >  pod     (客户请求至负载均衡,负载均衡在到达ingress,ingress分发至不同server,server分配至pod)

1、部署ingress-nginx

获取配置文件:https://github.com/kubernetes/ingress-nginx/blob/nginx-0.20.0/deploy/mandatory.yaml

这边下载失败,直接拷贝内容自己创建mandatory.yaml。

查看一下文件需要下载一个镜像,镜像比较大,就在一台node上面直接执行下载。

在两个node上直接下载镜像:docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0

以上操作完成,在k8s执行:

kubectl apply -f mandatory.yaml

执行完成查看:kubectl get pod -n ingress-nginx

然后将ingress暴露出去:vim  service-nodeport.yaml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 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: 32080  #http     - name: https       port: 443       targetPort: 443       protocol: TCP       nodePort: 32443  #https   selector:     app.kubernetes.io/name: ingress-nginx     app.kubernetes.io/part-of: ingress-nginx

查看暴露出去的ingress服务:kubectl get svc -n ingress-nginx

2、创建一个server及后端deployment(以nginx为例)

vim  svc-deployment.yaml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ###注释:定义pod apiVersion: apps/v1 kind: Deployment metadata:   name: myapp-deploy spec:   replicas: 3   selector:     matchLabels:       app: myapp   template:     metadata:       labels:         app: myapp     spec:       containers:       - name: myapp         image: nginx         imagePullPolicy: IfNotPresent         ports:         - containerPort: 80 ####注释:添加server --- apiVersion: v1 kind: Service metadata:   name: myapp spec:   selector:     app: myapp   ports:   - name: http     port: 80     targetPort: 80

查看创建的pod

查看创建的server

 测试通过svc访问pod,nginx副本数三个,修改的html文件访问时现实顺序。

然后将nginx加入ingress中,我们定义的名字为myapp,创建时候需要用到myapp名字。

vim ingress.yaml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 apiVersion: extensions/v1beta1 kind: Ingress metadata:   name: nginx-test spec:   rules:     - host: www.test.com       http:         paths:         - path: /           backend:             serviceName: myapp             servicePort: 80 ###注释 host:添加一个域名,测试时候通过域名访问 serviceName:将svc添加至ingress中

创建kubectl   apply -f   ingress.yaml

查看是否创建:kubectl get ingress

查看ingrss对外80暴露的端口是32080

kubectl get svc -n ingress-nginx

上面我们给ingress的yaml文件中设置了一个域名:www.test.com  我们通过外部windowns访问时就需要修改win的hosts文件

修改路径:C:\Windows\System32\drivers\etc\hosts

添加域名,及k8s服务器的ip地址。

然后测试访问,看是否通过域名可以访问。

ingress中添加的域名地址为:www.test.com ,ingress的80对外端口是32080,我们通过域名加端口进行访问测试,看是否能访问成功,访问成功是否是轮询访问三台nginx。

 

 

 

 

由此可见通过ingress访问server,server在分发至pod访问成功。

标签:Ingress,name,Kubernetes,访问,部署,ingress,nginx,yaml,myapp
来源: https://www.cnblogs.com/sxshaolong/p/15562104.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有