1、预备工作


  • unbuntu 16.04 or above
  • docker for linux
  • kubernetes for linux 集群环境

2、使用vs2017创建一个web api应用程序,并打包镜像到本地。


3、推送本地镜像到docker hub


4、编写k8s资源配置文件(yml)


备注:kubernetes使用的是“声明式模型”,即需要用户“描述”和“声明”其所希望实现的系统最终状态,kubernetes会努力帮你实现这个状态,模型的声明是通过编写yml文件来体现。

hello-world-deployment.yml如下

上面replicas部署两个副本实例,k8s集群将会自动分配到不同的worker上,等一下我们将对这两个实例,来探测k8s的负载均衡机制。

hello-world-service.yml如下

为了提供外部访问,注意需要修改type: NodePort。nodePort端口的范围:30000-32767。当然除了NodePort,还有其他的方式(LoadBalancer、Ingress)也可以提供service给外网访问,希望大家下去自己实践。

5、在k8s集群的master机器上,创建k8s资源对象


也可以通过调用k8s api server 或者 dashboard上面进行创建资源对象,其他方式大家下去自己实践。

6、通过dashboard查看集群概况


7、测试部署的微服务


浏览器上打开地址

到这一步,说明我们的微服务已经部署成功!!!

8、测试k8s内部负载均衡机制


多刷新几次浏览器,然后查看服务日志

从上面分析可以看到两个副本pod都被不同程度的进行了调用。在某些情况下,kuberproxy组件会使用轮训调度算法(Round-robin)将请求发送给集群中的多个实例。

到目前为止,已经完成了k8s集群部署并运行微服务,下一篇将与微服务结合实践k8s的健康探测机制

参考源码:https://github.com/justmine66/k8s.ecoysystem.apps

kubernetes默认使用iptables实现的负载均衡策略,路由转发规则可以通过命令 iptables -t nat -L KUBE-SERVICES -n 查看,如下:

9、浅析kubernetes


kubernetes是一个特殊的数据库,里面存储的是能够组成kubernetes模型的各种资源,包括Pods、Deployments、Services、Config Maps、Secrets、Namespaces、Nodes、Service Accounts、Ingress、Jobs等等。K8s中所有的配置都是通过API对象的spec去设置的,也就是用户通过配置系统的理想状态来改变系统,这是k8s重要设计理念之一,即所有的操作都是声明式(Declarative)的而不是命令式(Imperative)的。

下面我们将浅析k8s中一个**非常非常非常**优秀的设计,也是它区别于其他容器编排/调度系统(docker swarm etc.)的显著优势。

  • Pod

容器运行一个或一组应用程序进程,大多数情况下,一个单一的容器可能不够运行一个完整的应用程序,即使可以通过伸缩增加容器的数量。许多时候,除了运行应用程序主进程外,还需要运行一些辅助进程(例如:监控程序、日志程序等)来运行一个完整的应用程序。这些辅助进程可能需要与主进程住在一起(co-lacated),从而完成工作。为了支持这一特性,kubernetes创造了Pod(英文翻译豆荚,如下图很形象。),Pod是kubernetes集群运行部署应用的最小单位。利用这个特性我们可以很容易的实现Side-car模式,例如将日志收集系统完全从业务系统中抽离出来。

如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】。
如果你对 kubernets 感兴趣的话可以关注我,我会定期的在博客分享我的学习心得。

kubernetes实战之运行aspnetcore webapi微服务 - kubernetes的更多相关文章

  1. kubernetes实践之运行aspnetcore webapi微服务

    1.预备工作 unbuntu 16.04 and above docker kubernetes 集群 2.使用vs2017创建一个web api应用程序,并打包镜像到本地. 3.推送本地镜像到doc ...

  2. k8s实战为aspnetcore.webapi微服务注入配置信息 - kubernetes

    1.浅析k8s配置信息 Secret 以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens.私钥.密码.数据库连接.事件总线连接等. ConfigMap 以明文的形式存储数据 ...

  3. 使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

    1. 概述 老话说的好:任何成功都不是轻易得来的,是不断地坚持与面对的结果. 言归正传,之前我们聊了 SpringCloud 开发的微服务是如何部署在  Kubernetes(K8s)集群中的,今天我 ...

  4. Nginx集群之SSL证书的WebApi微服务

    目录 1       大概思路... 1 2       Nginx集群之SSL证书的WebApi微服务... 1 3       HTTP与HTTPS(SSL协议)... 1 4       Ope ...

  5. 【架构】Kubernetes和Spring Cloud哪个部署微服务更好?

    Spring Cloud 和Kubernetes都自称自己是部署和运行微服务的最好环境,但是它们在本质上和解决不同问题上是有很大差异的.在本文中,我们将看到每个平台如何帮助交付基于微服务的架构(MSA ...

  6. (转)实验文档2:实战交付一套dubbo微服务到kubernetes集群

    基础架构 主机名 角色 ip HDSS7-11.host.com k8s代理节点1,zk1 10.4.7.11 HDSS7-12.host.com k8s代理节点2,zk2 10.4.7.12 HDS ...

  7. 详解k8s零停机滚动发布微服务 - kubernetes

    1.前言 在当下微服务架构盛行的时代,用户希望应用程序时时刻刻都是可用,为了满足不断变化的新业务,需要不断升级更新应用程序,有时可能需要频繁的发布版本.实现"零停机"." ...

  8. 详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一 ...

  9. (转)详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

    转:https://www.cnblogs.com/justmine/p/8991379.html 写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群 ...

随机推荐

  1. SSM-SpringMVC-33:SpringMVC中拦截器Interceptor讲解

     ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 拦截器Interceptor: 对处理方法进行双向的拦截,可以对其做日志记录等 我选择的是实现Handler ...

  2. 闪回工具flashback

    Ⅰ.背景 早先操作数据误操作后,我们一般通过全量备份+binlog的方式来实现恢复(前滚) 有时只想撤销一个几分钟前的操作,采用这种方式就会显得很笨重 大家都知道Oracle有个叫做flashback ...

  3. 【数据结构】B-Tree, B+Tree, B*树介绍

    [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tree索引,InnoDB还支持B+Tree索引,Memory ...

  4. 深入理解HashMap上篇

    前言: HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型.随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化, ...

  5. React Native在特赞的应用与实践

    基于React技术栈构建开发前端项目,并使用React Native开发特赞移动APP 目前正在使用Node.js开发和维护特赞服务网关,希望Node.js能够在更轻量级的微服务架构中发挥重要作用 课 ...

  6. 超实用的JavaScript代码段 Item2 --伸缩菜单栏

    伸缩菜单栏 点击标题时判断该标题下的菜单是否显示,如果是显示的则将其隐藏,如果是隐藏的则将其显示出来. <!doctype html> <html lang="en&quo ...

  7. centos7 更新Firefox版本

    1.用你本地的旧版 firefox,访问http://www.firefox.com.cn,下载Linux版本的Firefox,因为我的是64位故选择的安装包是:"Firefox-lates ...

  8. BZOJ_2764_[JLOI2011]基因补全_DP_高精度

    BZOJ_2764_[JLOI2011]基因补全_DP_高精度 Description 在生物课中我们学过,碱基组成了DNA(脱氧核糖核酸),他们分别可以用大写字母A,C,T,G表示,其中A总与T配对 ...

  9. spring 上传文件文件的一个例子,

    /** * 类名称:UploadTest 类描述:创建人:zhang 创建时间:2015年3月13日 下午4:20:57 修改人:zhang * 修改时间:2015年3月13日 下午4:20:57 修 ...

  10. Quartz定时调度在Web中的应用

    1.在数据库中建一个job表和job日志表 job表