资讯专栏INFORMATION COLUMN

ingress controller学习记录

MadPecker / 1968人阅读

摘要:创建按文档操作在的中将固定一下。的内容创建的和的。此时,在本地机器绑定为两个的,就可以在本地机器的浏览器中访问网页了。

创建ingress-nginx

按文档操作

</>复制代码

  1. wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
  2. kubectl apply -f mandatory.yaml

</>复制代码

  1. wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml
  2. ### 在service的spec中将nodePort固定一下。
  3. kubectl apply -f service-nodeport.yaml

deploy-demo.yaml 的内容

</>复制代码

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: myapp
  5. namespace: default
  6. spec:
  7. selector:
  8. app: myapp
  9. release: canary
  10. ports:
  11. - name: http
  12. targetPort: 80
  13. port: 80
  14. ---
  15. apiVersion: apps/v1
  16. kind: Deployment
  17. metadata:
  18. name: myapp-deploy
  19. namespace: default
  20. spec:
  21. replicas: 3
  22. selector:
  23. matchLabels:
  24. app: myapp
  25. release: canary
  26. template:
  27. metadata:
  28. labels:
  29. app: myapp
  30. release: canary
  31. spec:
  32. containers:
  33. - name: myapp
  34. image: ikubernetes/myapp:v2
  35. ports:
  36. - name: http
  37. containerPort: 80

创建myapp的service和myapp-deploy的Deployment。

kubectl apply -f deploy-demo.yaml

结果

</>复制代码

  1. [root@master ingress-nginx]# kubectl get pods -n ingress-nginx
  2. NAME READY STATUS RESTARTS AGE
  3. default-http-backend-6586bc58b6-4f6qm 1/1 Running 0 30m
  4. nginx-ingress-controller-7675fd6cdb-njvdb 1/1 Running 0 30m
  5. [root@master ingress-nginx]# kubectl get pods
  6. NAME READY STATUS RESTARTS AGE
  7. myapp-deploy-67f6f6b4dc-67f7f 1/1 Running 0 7m
  8. myapp-deploy-67f6f6b4dc-hdbht 1/1 Running 0 7m
  9. myapp-deploy-67f6f6b4dc-ktfh6 1/1 Running 0 7m
  10. [root@master ingress-nginx]# kubectl get svc --all-namespaces
  11. NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  12. default kubernetes ClusterIP 10.96.0.1 443/TCP 8d
  13. default myapp ClusterIP 10.103.69.18 80/TCP 7m
  14. ingress-nginx default-http-backend ClusterIP 10.97.71.74 80/TCP 33m
  15. ingress-nginx ingress-nginx NodePort 10.110.227.164 80:30080/TCP,443:30443/TCP 31m
  16. kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP 8d

此时,访问nodeIP:nodePort已经可以看到输出,如图

创建Ingress对象
ingress-myapp.yaml 的内容如下

</>复制代码

  1. apiVersion: extensions/v1beta1
  2. kind: Ingress
  3. metadata:
  4. name: ingress-myapp
  5. namespace: default
  6. annotations:
  7. kubernetes.io/ingress.class: "nginx"
  8. spec:
  9. rules:
  10. - host: myapp.test.com
  11. http:
  12. paths:
  13. - path:
  14. backend:
  15. serviceName: myapp
  16. servicePort: 80

创建Ingress

</>复制代码

  1. [root@master ingress-nginx]# kubectl apply -f ingress-myapp.yaml
  2. ingress.extensions/ingress-myapp created
  3. [root@master ingress-nginx]# kubectl get ingress
  4. NAME HOSTS ADDRESS PORTS AGE
  5. ingress-myapp myapp.test.com 80 4s

创建成功后,Ingress会将信息注入到ingress-controller里面去,即:会自动转换为nginx的配置文件

</>复制代码

  1. [root@master ingress-nginx]# kubectl get pods -n ingress-nginx
  2. NAME READY STATUS RESTARTS AGE
  3. default-http-backend-6586bc58b6-4f6qm 1/1 Running 0 1h
  4. nginx-ingress-controller-7675fd6cdb-njvdb 1/1 Running 0 1h
  5. [root@master ingress-nginx]# kubectl exec -n ingress-nginx -it nginx-ingress-controller-7675fd6cdb-njvdb -- /bin/sh
  6. $ cat nginx.conf|grep -C2 myapp
  7. ## end server _
  8. ## start server myapp.test.com
  9. server {
  10. server_name myapp.test.com ;
  11. listen 80;
  12. --
  13. set $namespace "default";
  14. set $ingress_name "ingress-myapp";
  15. set $service_name "myapp";
  16. set $service_port "80";
  17. set $location_path "/";
  18. --
  19. port_in_redirect off;
  20. set $proxy_upstream_name "default-myapp-80";
  21. client_max_body_size "1m";
  22. --
  23. }
  24. ## end server myapp.test.com
  25. # default server, used for NGINX healthcheck and access to nginx stats
  26. $

可以看到pod内的nginx.conf文件确实被注入了myapp相关的信息。

此时,在本地机器绑定myapp.test.com为两个node的ip,就可以在本地机器的浏览器中访问 http://myapp.test.com:30080/ 网页了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32695.html

相关文章

  • ingress controller学习记录(2)

    摘要:出来的是的欢迎页面使网站支持协议制作证书和私钥创建证书和私钥这个证书不能直接被的使用,需要转成后,才能被注入到中,被使用。访问发现可以访问。 将后端服务修改为tomcat 编辑 ingress-tomcat.yaml, 文件内容如下: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-tomca...

    tulayang 评论0 收藏0
  • 基于kubernetes+docker+jenkins的DevOps实践

    摘要:一个小服务器加本地一个闲置从机撑进去这么多东西很显然爆了,于是把拆出来,用上了公共的云服务容器镜像服务。使用对集群外暴露服务这里使用的是在中部署有官方部署手册,基本按着走一遍就能部署上去了。 基于kubernetes+docker+jenkins的DevOps实践 之前自己的项目开发就搭了个cicd的环境,那时候是在本就小的可怜的服务器上搭了一套 jenkins + docker...

    zhichangterry 评论0 收藏0
  • 基于kubernetes+docker+jenkins的DevOps实践

    摘要:一个小服务器加本地一个闲置从机撑进去这么多东西很显然爆了,于是把拆出来,用上了公共的云服务容器镜像服务。使用对集群外暴露服务这里使用的是在中部署有官方部署手册,基本按着走一遍就能部署上去了。 基于kubernetes+docker+jenkins的DevOps实践 之前自己的项目开发就搭了个cicd的环境,那时候是在本就小的可怜的服务器上搭了一套 jenkins + docker...

    paulli3 评论0 收藏0
  • Kubernetes上的负载均衡详解

    摘要:部署只是一种规则,控制器组件会将这一规则应用于实际负载均衡器中。原因是功能仅允许将端口用于路由,负载均衡器和则可作为全局启动。负载均衡的限制提供了功能丰富的负载均衡器支持详细介绍在此。截至目前,我们暂时无法使用工具将负载均衡器配置从转换为。 如果您的应用程序是面向大量用户、会吸引大量流量,那么一个不变的目标一定是在高效满足用户需求的同时、不让用户感知到任何类似于服务器繁忙!的情况。这一...

    CoderBear 评论0 收藏0

发表评论

0条评论

MadPecker

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<