转载声明

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

1.下载镜像

  1. docker pull edisonsaonian/k8s-demo

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

2.编写YAML

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: k8s-demo1
  5. namespace: aspnetcore
  6. labels:
  7. name: k8s-demo1
  8. spec:
  9. replicas:
  10. selector:
  11. matchLabels:
  12. name: k8s-demo1
  13. template:
  14. metadata:
  15. labels:
  16. name: k8s-demo1
  17. spec:
  18. containers:
  19. - name: k8s-demo
  20. image: edisonsaonian/k8s-demo
  21. ports:
  22. - containerPort:
  23. imagePullPolicy: Always
  24.  
  25. ---
  26.  
  27. kind: Service
  28. apiVersion: v1
  29. metadata:
  30. name: k8s-demo1
  31. namespace: aspnetcore
  32. spec:
  33. type: NodePort
  34. ports:
  35. - port:
  36. targetPort:
  37. selector:
  38. 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的部署,只需要下面这一句命令行即可:

  1. kubectl create -f deploy.yaml

提示如下:

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

  1. 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。

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

再次查看dashboard

5.4 自动伸缩

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

  1. kubectl autoscale deployment k8s-demo1 --min=1 --max=3 --namespace=aspnetcore

K8S之WebApi部署的更多相关文章

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  2. .net core webapi 部署windows server 2008 r2 笔记

    WebAPI部署文档 安装dotnet-dev-win-x64.1.0.4 安装DotNetCore.1.1.0-WindowsHosting 安装vc_redist.x64 安装Windows6.1 ...

  3. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

  4. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之自签TLS证书及Etcd集群部署(二)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.服务器设置 1.把每一 ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...

  6. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...

  7. (视频)asp.net core系列之k8s集群部署视频

    0.前言 应许多网友的要求,特此录制一下k8s集群部署的视频.在录制完成后发现视频的声音存在一点瑕疵,不过不影响大家的观感. 一.视频说明 1.视频地址: 如果有不懂,或者有疑问的欢迎留言.视频分为两 ...

  8. 在k8s集群部署SonarQube

    目录 1.2.存储环境 1.3.sonarqube版本 2.部署sonarqube 2.1.部署PostgreSQL 2.2.部署SonarQube 2.3.访问检查 SonarQube 是一款用于代 ...

  9. 基于k8s集群部署prometheus监控ingress nginx

    目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...

随机推荐

  1. 【react】---Hooks的基本使用---【巷子】

    一.react-hooks概念 React中一切皆为组件,React中组件分为类组件和函数组件,在React中如果需要记录一个组件的状态的时候,那么这个组件必须是类组件.那么能否让函数组件拥有类组件的 ...

  2. Spring 学习笔记 Resource 资源

    Spring Resources 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理 URL 资源.File 资源.ClassPath相关资源等等.并且在 java 中 Java . ...

  3. [BOI2009]Radio Transmission 无线传输

    题目描述 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入输出格式 输入格式: 第一行给出字符串的长度,1 < L ≤ 1, ...

  4. 结对编程-Core 第12组 [pb15061359+pb15061351]

    一.项目要求 1.输入题目数量,生成操作数为3~5个的四则运算题目 2.输入上限值控制生成的操作数的最大值以及结果的最大值 3.输入支持的操作符类型:加.减.乘.除.乘方.括号 4.输入支持的操作数类 ...

  5. 2018-12-21-微软最具价值专家-MVP-如何获得-Resharper-的免费功能

    title author date CreateTime categories 微软最具价值专家 MVP 如何获得 Resharper 的免费功能 lindexi 2018-12-21 11:29:0 ...

  6. linux 下格式化命令小记

    mkfs.ext4 /dev/sda1    # 格式化为ext4分区mkfs.ext3 /dev/sda1    # 格式化为ext3分区mkfs.ext2 /dev/sda1    # 格式化为e ...

  7. 创建maven项目的时候:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. 解决办法

    问题: https://yq.aliyun.com/ziliao/364921      尝试没成功. https://www.aliyun.com/jiaocheng/296712.html   尝 ...

  8. HashMap和Hashtable有什么区别

    HashMap和Hashtable都实现了Map接口,因此很多特性非常相似.但是,他们有以下不同点: HashMap允许键和值是null,而Hashtable不允许键或者值是null. Hashtab ...

  9. wpf tabcontrol内的datagrid的selectionChanged事件向往传递问题

    tabcontrol 内的一个tabitem里是datagrid 当程序相应datagrid的selectionchanged事件后会向上传递到tabcontrol的selectionchanged事 ...

  10. es6学习(一)

    之前一直听说es6,断断续续看过阮一峰老师的"ECMAScript 6 入门",觉得写得很好,但由于实际项目中没用到,所以并没有过多的去研究(人的惰性在我这里表现的淋漓尽致).直到 ...