• 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加端口号可以访问

  • 相关阅读:
    jNotify:操作结果信息提示条
    jqurey datatable tableTools 自定义button元素 以及按钮定义事件
    jqurey datatable mRender FnRender 不起作用问题
    VS2013 ViewData ViewBag Ajax等关键词报错(当前上下文不存在名称)而且不提示也点不出来,但是可以正常运行,
    关于 update别名 与update select
    EF 保证线程内唯一 上下文的创建
    文件接收上传
    lucence.net+盘古分词
    log4net 入门教程
    MVC+EF OA观看视频记录
  • 原文地址:https://www.cnblogs.com/minseo/p/12096027.html
Copyright © 2020-2023  润新知