zoukankan      html  css  js  c++  java
  • Kubernetes之Deployment控制器

      Pod与controllers的关系

    • controllers:在集群上管理和运行容器的对象
    • 通过label-selector相关联
    • Pod通过控制器实现应用的运维,如伸缩,滚动升级等

       Deployment功能与应用场景

    • 部署无状态应用
    • 管理Pod和ReplicaSet
    • 具有上线部署,副本设定,滚动升级,回滚等功能
    • 提供声明式更新,例如只更新一个新的Image

      应用场景:Web服务,微服务

      yaml字段解析 

      模板

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-depolyment
      namespace: default
    spec:
      replicas: 3
      selector:
        matchLables:
          app: nginx
      template:
        metadate:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    

      创建deployment的yaml的文件

    kubectl create deployment web --image=nginx --dry-run -o yaml
    

      

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      creationTimestamp: null
      labels:
        app: web
      name: web
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web
      strategy: {}
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: web
        spec:
          containers:
          - image: nginx
            name: nginx
            resources: {}
    status: {}
    

      重定向到一个文件

    kubectl create deployment web --image=nginx --dry-run -o yaml >web.yaml
    

      修改该yaml文档成测试的java-demo

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      creationTimestamp: null
      labels:
        app: web
      name: web
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: web
      strategy: {}
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: web
        spec:
          containers:
          - image: lizhenliang/java-demo
            name: java
            resources: {}
    status: {}
    

      执行

    kubectl apply -f web.yaml
    

      查看

    kubectl get pods
    

       查看容器日志,显示端口已经启动

    kubectl logs web-867dd4dcf-fsgq8
    

       部署完应用怎么让应用暴露外部访问

      service和ingress两种方法暴露

      查看部署deploy

    kubectl get deploy
    

       应用发布

    kubectl expose --name=web deployment web --port=80 --target-port=8080 --type=NodePort
    

      指定资源的类型是deployment

      指定资源的名称是web  

      指定service作为这一组的访问入口,负载均衡到后端的端口 指定为80

      --target-port指定后端tomcat的端口

      --name指定service的名称,如果不指定和deployment的名称是一样的

      --type指定service的类型为NodePort分配一个随机的端口

      想要产生一个yaml使用以下命令

    kubectl expose --name=web deployment web --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml
    

      

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      labels:
        app: web
      name: web
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 8080
      selector:
        app: web
      type: NodePort
    status:
      loadBalancer: {}
    

      查看创建的service

    kubectl get service
    

       使用node的ip加端口号可以访问

  • 相关阅读:
    AX 2012 Security Framework
    The new concept 'Model' in AX 2012
    How to debug the SSRS report in AX 2012
    Using The 'Report Data Provider' As The Data Source For AX 2012 SSRS Report
    Deploy SSRS Report In AX 2012
    AX 2012 SSRS Report Data Source Type
    《Taurus Database: How to be Fast, Available, and Frugal in the Cloud》阅读笔记
    图分析理论 大纲小结
    一文快速了解Posix IO 缓冲
    #转载备忘# Linux程序调试工具
  • 原文地址:https://www.cnblogs.com/minseo/p/12096027.html
Copyright © 2011-2022 走看看