标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。