转载声明
本文转自: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