资讯专栏INFORMATION COLUMN

ingress controller学习记录

MadPecker / 1833人阅读

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

创建ingress-nginx

按文档操作

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

deploy-demo.yaml 的内容

apiVersion: v1
kind: Service
metadata:
  name: myapp
  namespace: default
spec:
  selector:
    app: myapp
    release: canary
  ports:
  - name: http
    targetPort: 80
    port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy
  namespace: default
spec:
  replicas: 3
  selector: 
    matchLabels:
      app: myapp
      release: canary
  template:
    metadata:
      labels:
        app: myapp
        release: canary
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v2
        ports: 
        - name: http
          containerPort: 80

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

kubectl apply -f deploy-demo.yaml

结果

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

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

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

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: ingress-myapp
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: myapp.test.com
    http: 
      paths:
      - path:
        backend: 
          serviceName: myapp
          servicePort: 80

创建Ingress

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

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

[root@master ingress-nginx]# kubectl get pods -n ingress-nginx
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-6586bc58b6-4f6qm       1/1       Running   0          1h
nginx-ingress-controller-7675fd6cdb-njvdb   1/1       Running   0          1h
[root@master ingress-nginx]# kubectl exec -n ingress-nginx -it nginx-ingress-controller-7675fd6cdb-njvdb -- /bin/sh

$ cat nginx.conf|grep -C2 myapp
    ## end server _
    
    ## start server myapp.test.com
    server {
        server_name myapp.test.com ;
        
        listen 80;
--
            
            set $namespace      "default";
            set $ingress_name   "ingress-myapp";
            set $service_name   "myapp";
            set $service_port   "80";
            set $location_path  "/";
--
            port_in_redirect off;
            
            set $proxy_upstream_name "default-myapp-80";
            
            client_max_body_size                    "1m";
--
        
    }
    ## end server myapp.test.com
    
    # default server, used for NGINX healthcheck and access to nginx stats
$ 

可以看到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元查看
<