前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard

ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard

作者头像
心莱科技雪雁
发布2019-08-13 18:31:10
4760
发布2019-08-13 18:31:10
举报
文章被收录于专栏:雪雁的专栏雪雁的专栏

上一篇《K8S集群部署》中搭建好了一个最小化的K8S集群,这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一下整个部署过程的运行机制,然后部署一下Dashboard,完成可视化管理。本篇已加入了《.NET Core on K8S学习实践系列文章索引》,更多内容请到索引中查看。

01

准备一个ASP.NET Core项目

这部分请参考我之前的一篇文章《ASP.NET Core on K8S学习初探(3)》,准备一个简单的ASP.NET Core WebAPI示例项目。

代码语言:javascript
复制
其中,你可以直接使用我上传的这个镜像(edisonsaonian/k8s-demo)。

我们可以通过浏览器来验证一下是否部署成功了。通过访问两个Node节点的30409端口,可以得到如下结果:

  由于我们的示例WebAPI项目十分简单,因此能够访问到ValuesController的接口就代表我们已经部署到K8S成功了。

02

K8S部署过程解析

刚刚我们成功部署了一个ASP.NET Core WebAPI项目到K8S集群中,由于在yaml中我们设置了两个Pod副本,他们分别运行在了k8s-node1和k8s-node2中:

这里我们来看看整个部署的过程,大体上过一遍流程,能够有个大概印象就可以,下图主要参考自CloudMan的《每天5分钟玩转Kubernetes》一书。

  (1)Kubectl发送部署请求到API Server

  (2)API Server通知Controller Manager创建一个deployment资源

  (3)Scheduler执行调度任务,将两个Pod副本分发到k8s-node1与k8s-node2

  (4)k8s-node1和k8s-node2上的kubectl在各自的节点上创建并运行Pod(当然,其中包括了拉取镜像,创建容器等一系列操作)

另外的补充:

  (1)所有应用的配置和当前状态信息都会保存在etcd中,执行kubectl get pod时API Server会从etcd中读取这些数据

  (2)flannel会为每个pod分配IP,这块先了解到这里就好,后面会介绍网络。

03

部署Dashboard

按理说,部署Dashboard就下面一句话:

代码语言:javascript
复制
kubectl apply -f \
https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

  But,默认镜像国内无法访问,这里曲线救国:

  首先,将这个yaml文件下载下来:

代码语言:javascript
复制
代码语言:javascript
复制
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

  其次,通过vim编辑yaml文件中默认的镜像源地址:这里替换为李振良老师的镜像地址,感谢李振良老师。

代码语言:javascript
复制
代码语言:javascript
复制
    containers:
      - name: kubernetes-dashboard
        #image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
        image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1

  然后,由于默认Dashboard只能集群内部访问,因此修改Service为NodePort类型,暴露到外部可以访问:

代码语言:javascript
复制
代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
代码语言:javascript
复制

  最后,我们直接apply本地这个yaml文件来创建Dashboard:

代码语言:javascript
复制
kubectl apply -f kubernetes-dashboard.yaml

  看到提示“service/kubernetes-dashboard created”代表Dashboard创建成功了,这时我们通过浏览器来访问一下:

  这里如果你通过Chrome访问提示证书错误无法访问,可以通过如下步骤解决:

代码语言:javascript
复制
chrome://net-internals/#hsts

  找到Delete domain security policies,输入你的NodeIP地址点击Delete即可:

  接上一步,看到了登录界面,需要我们配置kubeconfig或输入token,这里我们选择后者,通过以下命令获取输出的token:

代码语言:javascript
复制
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

  拿到token在登录界面的令牌区域输入,然后点击登录:

  即可进入下图所示的主界面了:

  在Dashboard中,我们通过kubectl所做的操作大部分都可以可视化操作,比如我们可以对deployment做伸缩:

  更多内容,请期待后续分享。

04

小结

本文通过部署一个ASP.NET Core WebAPI到K8S为例,介绍了K8S部署的详细过程步骤,最后部署Dashboard从而能够进行可视化的管理。后续会探索各种应用的运行方式和更多的内容,当然笔者也是初学,有很多不足之处,请多包涵。

参考资料:

(1)CloudMan,《每天5分钟玩转Kubernetes》

(2)李振良,《一天入门Kubernets教程》

(3)李振良,《30分钟部署一个Kubernetes集群》

(4)cao_xiaobo,《K8S部署Dashboard》


恰童鞋骚年,风华不再正茂,仍想挥斥方遒

点个在看少个bug ?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麦扣聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档