您现在的位置是:网站首页>>Linux运维Linux运维

基于K8S实现企业常用项目架构(项目部署篇)

发布时间:2018-12-01 16:12:19分类:Linux运维阅读:1367

    七、使用helm部署redis高可用集群

    八、部署tomcat应用

    九、使用Ingress-nginx作为集群入口代理tomcat


    七、使用helm部署redis高可用集群

    redis高可用集群清单文件参考:https://hub.kubeapps.com/charts/stable/redis-ha 

    1、搜索redischart,并拉取redis-ha到本地

    [root@k8s-master manifests]# pwd

    /opt/manifests

    [root@k8s-master manifests]# helm search redis-ha



    [root@k8s-master manifests]# helm fetch stable/redis-ha

    [root@k8s-master manifests]# tar -xf redis-ha-3.0.1.tgz

    [root@k8s-master manifests]# cd redis-ha/

    [root@k8s-master redis-ha]# pwd

    /opt/manifests/redis-ha

     

    2、修改模板参数值文件values.yaml,指定pv卷大小为5Gi,以适用之前创建的pv

    [root@k8s-master redis-ha]# vim values.yaml








    3、确认chart配置是否正确

    [root@k8s-master manifests]# helm lint redis-ha


     


    4、使用helm从本地的chart安装redis-ha高可用集群

    [root@k8s-master manifests]# helm install --name cache redis-ha


     





    5、列出使用helm安装的实例

    [root@k8s-master manifests]# helm list

     


    八、部署tomcat应用

    1、创建清单文件,用于构建DeploymentService资源

    [root@k8s-master manifests]# pwd

    /opt/manifests

    [root@k8s-master manifests]# vim web-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web
      labels:
        app: tomcat
        release: 1.0.0
        proj: web-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: tomcat
          release: 1.0.0
      template:
        metadata:
          labels:
            app: tomcat
            release: 1.0.0
        spec:
          containers:
            - name: tomcat-app
              image: xdao07/spring-session-demo:latest
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 8080
              livenessProbe:
                exec:
                  command:
                  - cat
                  - /usr/local/tomcat/webapps/app/index.jsp
                initialDelaySeconds: 15
                periodSeconds: 20
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                requests:
                  cpu: 200m
                  memory: 256Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: web
      labels:
        app: service
        release: 1.0.0
        proj: web-demo
    spec:
      type: NodePort
      ports:
        - port: 80
          targetPort: 8080
          protocol: TCP
          name: tomcat
      selector:
        app: tomcat
        release: 1.0.0 


    2、执行清单文件,创建DeploymentService资源

    [root@k8s-master manifests]# kubectl apply -f web-deployment.yaml

    3、查看之前清单创建的资源,通过标签过滤相关的资源

    [root@k8s-master manifests]# kubectl get all -l proj=web-demo -o wide


    4、通过Service代理访问tomcat服务,返回Pod主机名及IPSeesionId等信息

    [root@k8s-master manifests]# curl http://10.107.247.96/app/

     











    九、使用Ingress-nginx作为集群入口代理tomcat

    1、创建ingress清单,代理指定service代表的Pod资源(tomcat

    [root@k8s-master ingress]# pwd

    /opt/manifests/ingress

    [root@k8s-master ingress]# vim web-ingress.yaml

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: web-ingress
      namespace: default
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/load-balance: "round_robin"
    spec:
      rules:
      - host: myweb.example.com
        http:
          paths:
          - backend:
              serviceName: web
              servicePort: 80
            path: 


    2、执行清单,创建ingress-nginx代理

    [root@k8s-master ingress]# kubectl apply -f web-ingress.yaml

    ingress.extensions/web-ingress created

     

    3、查看ingress资源及其详细信息

    [root@k8s-master ingress]# kubectl get ingress



    [root@k8s-master ingress]# kubectl describe ingress web-ingress

     

    4、在浏览器中通过域名myweb.example.com访问,将轮询后端的tomcat服务

    [root@k8s-master ingress]# kubectl get svc -n ingress-nginx

     


    1)在hosts文件中添加域名解析到k8s集群的nodeIP







    2)通过域名加端口号访问,在浏览器地址栏回车刷新会轮询后面主机,但是sessionId不会变化,实现session共享






















    相关文章:

      基于K8S实现企业常用项目架构(项目概述)

      基于K8S实现企业常用项目架构(K8S集群部署篇)