• K8S之WebApi部署


    转载声明

    本文转自:ASP.NET Core on K8S学习初探(3)部署API到K8S

    1.下载镜像

    docker pull edisonsaonian/k8s-demo

    因为是测试流程,直接把文中提到的镜像也拉到本地了

    2.编写YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: k8s-demo1
      namespace: aspnetcore
      labels:
        name: k8s-demo1
    spec:
      replicas: 2
      selector:
        matchLabels:
          name: k8s-demo1
      template:
        metadata:
          labels:
            name: k8s-demo1
        spec:
          containers:
          - name: k8s-demo
            image: edisonsaonian/k8s-demo
            ports:
            - containerPort: 80
            imagePullPolicy: Always
    
    ---
    
    kind: Service
    apiVersion: v1
    metadata:
      name: k8s-demo1
      namespace: aspnetcore
    spec:
      type: NodePort
      ports:
        - port: 80
          targetPort: 80
      selector:
        name: k8s-demo1

    这里这个deploy.yaml就会告诉K8S关于你的API的所有信息,以及通过什么样的方式暴露出来让外部访问。

    需要注意的是,这里我们提前为要部署的ASP.NET Core WebAPI项目创建了一个namespace,叫做aspnetcore,因此这里写的namespace : aspnetcore。

    K8S中通过标签来区分不同的服务,因此这里统一name写成了k8s-demo。

    在多实例的配置上,通过replicas : 2这个设置告诉K8S给我启动2个实例起来,当然你可以写更大的一个数量值。

    最后,在spec中告诉K8S我要通过NodePort的方式暴露出来公开访问,因此端口范围从上一篇可以知道,应该是 30000-32767这个范围之内。

    3.通过kubectl部署到K8S

    首先,确保你的Docker for Windows以及Kubernetes都启动起来了。

    然后,在Powershell中通过kubectl完成API的部署,只需要下面这一句命令行即可:

    kubectl create -f deploy.yaml

    提示如下:

    看到上面的提示"service created",就可以知道已经创建好了,这里我们再通过下面这个命令来验证一下:

    kubectl get svc -n aspnetcore

     可以看到,在命名空间aspnetcore下,就有了一个k8s-demo1的服务(k8s-demo是之前练习加上的)运行起来了,并通过端口号30881向外部提供访问。

     

    4.验证WebApi

    首先,我们可以通过浏览器来访问一下这个API接口,看看是否能正常访问到。

    • /api/values

     

    •  /api/values/1000

    5.Dashboard

    5.1状态查看

    通过Dashboard查看状态(需要切换命名空间)

    5.2Dashboard动态伸缩

     将弹窗中需要的容器数由2改为1

     查看状态

    5.3Kubectl动态伸缩

    除了在Dashboard中可视化地操作进行伸缩,也可以通过kubectl来进行,例如下面这句命令,将容器实例扩展到3个。需要注意的是,由于我们的k8s-demo1所在的命名空间是在aspnetcore下,因此也需要指明--namespace=aspnetcore。

    kubectl scale deployment k8s-demo1 --replicas=2 --namespace=aspnetcore

    再次查看dashboard

    5.4 自动伸缩

    在K8S中,提供了一个autoscale接口来实现服务的自动伸缩,它会采用默认的自动伸缩策略(例如根据CPU的负载情况)来帮助我们实现弹性伸缩的功能。例如下面这句命令可以实现我们的k8s-demo可以伸缩的范围是1~3个,根据负载情况自己伸缩,在没有多少请求量压力很小时收缩为一个,在压力较大时启动另一个实例来降低负载。

    kubectl autoscale deployment k8s-demo1 --min=1 --max=3 --namespace=aspnetcore
  • 相关阅读:
    Java之基于注解的Excel导出
    从box-sizing:border-box属性入手,来了解盒模型
    提交代码出现 Push to origin/master was rejected 错误解决方法
    Mysql锁表解锁
    httpclient工具使用(org.apache.httpcomponents.httpclient)
    Jackson总结:常用注解、整合spring、自定义JsonSerializer
    Linux创建目录和文件的默认权限设置(umask命令)
    Apache Phoenix的子查询
    Apache Phoenix的Join操作和优化
    Apache Phoenix的Array类型
  • 原文地址:https://www.cnblogs.com/imstrive/p/11479726.html
Copyright © 2020-2023  润新知