• K8s小白?应用部署太难?看这篇就够了!


    云原生趋势下,容器和 Kubernetes 可谓是家喻户晓,许多企业内部的研发团队都在使用 Kubernetes 打造 DevOps 平台。从最早的容器概念到 Kubernetes 再到 DevOps/GitOps 整个技术链非常庞大,Kubernetes 的优势也显而易见 可移动 可扩展 自修复 等,但有一个劣势点就是技术门槛太高,对于开发者来说单单一个 Kubernetes 就够我们学习一段时间了。

    通常我们在 Kubernetes 中部署应用需要用 Dockerfile 将业务打成镜像,然后编写 Kubernetes 的 Yaml 部署应用,再结合 Jenkins 的 Pipeline 实现 CI/CD。对于不懂容器的开发者来说,要学习 Dockerfile 语法、K8s Yaml 语法、 Jenkins Pipeline 语法,学习成本有点高。“我还要 Coding 呢!”

    本文将分别介绍 如何在 Kubernetes 中部署应用 和 如何在 Rainbond 中部署应用。

    在 Kubernetes 中部署应用

    在 Kubernetes 中部署一个 Nginx 并通过 NodePort 访问和通过 Ingress 访问。

    1. 创建 nginx-deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    1. 创建 nginx-service.yaml,并设置 Service 类型为 NodePort
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      type: NodePort
      selector:
        app: nginx
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
          nodePort: 30080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 创建 Nginx Deployment 和 Nginx Service
    $ kubectl apply -f nginx-deployment.yaml
    $ kubectl apply -f nginx-service.yaml
    
    • 1
    • 2
    1. 创建 Ingress 策略
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: nginx-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      ingressClassName: nginx-example
      rules:
      - http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    kubectl apply -f nginx-ingress.yaml
    
    • 1

    以上就是在 Kubernetes 中部署一个 Nginx 并开启 Nodeport 访问和 Ingress 访问的简单示例,这个过程需要理解 K8s 的资源类型 Deployment Service Ingress,以及资源类型之间如何绑定的等等。这仅仅是冰山一角,对于复杂的业务需要写多个这样的 Yaml 以及理清楚业务之间的依赖关系等。

    在 Rainbond 中部署应用

    Rainbond 是建立在 Kubernetes 之上的云原生应用管理平台,遵循以应用为中心的概念,其目的就是为了让用户不在编写复杂的 Yaml 文件就能轻松的将自己的业务部署在 Kubernetes 中。

    通过一条命令安装 Rainbond Allinone

    这里同样也是部署一个 Nginx 并通过 NodePort 访问和通过 Ingress 访问。

    1. 部署 Nginx 应用,在 Rainbond 团队视图内 -> 选择基于镜像创建组件 -> 镜像地址选择 nginx:latest 创建即可。

    1. 开启 Ingress 访问,在 Nginx 组件内 -> 端口 -> 打开对外服务,默认会生成可访问的域名。

    1. 开启 Nodeport 访问,在 应用视图内 -> 网关 -> TCP/UDP -> 添加策略一键绑定 TCP 访问策略。

    在 Rainbond 上部署应用只需点点点,了解 Rainbond 的一些概念,零学习成本。文中提到的 Rainbond 的一些概念:

    组件: 组件对应 K8s 中的控制器,比如 Deployment、Statefulset 等。

    应用: 应用是由多个组件组成的应用,通过一套微服务包含多个组件称之为一个应用。

    网关: 网关是 Rainbond 对外访问的入口,域名、Tcp访问都是通过网关生成的访问策略。

    还有文中没提到的一些概念,比如:

    团队: Rainbond的团队意义上是分配给部门使用的,比如开发部门、测试部门,实际底层上团队对应的是 K8s NameSpace。

    最后

    在 Kubernetes 中部署应用需要我们大量学习容器、Kubernetes的概念以及 Yaml 语法等等。而在 Rainbond 上部署应用只需要在 UI 界面上点点即可完成部署,这对不懂 K8s 和容器的同学们很友好,可以快速部署自己的业务。

  • 相关阅读:
    Spring 怎么解决循环依赖的呢?
    支持向量机SVM--线性
    学习笔记-sliver
    【ComfyUI】MacBook Pro 安装(Intel 集成显卡)
    HTTP身份认证
    「项目管理」甘特图制定项目计划的方法
    [Machine learning][Part3] numpy 矢量矩阵操作的基础知识
    Flink 系统性学习笔记系列
    分布式与一致性协议之CAP(三)
    Nacos整合到SpringCloud中
  • 原文地址:https://blog.csdn.net/Mrex326428/article/details/126490529