前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「走进k8s」如何初体验Kubernetes(12)

「走进k8s」如何初体验Kubernetes(12)

作者头像
IT架构圈
发布2019-08-08 17:24:15
1.7K0
发布2019-08-08 17:24:15
举报
文章被收录于专栏:IT架构圈IT架构圈

从今天开始kubernetes的学习,简称为k8s,kubernetes是google团队发起的一个开源项目,它的目标是跨多个主机的容器,用于自动部署,扩展和管理容器化的应用程序。前面也说过docker了,其实docker可以看成k8s的底层组件,k8s组件和架构相对来说还是比较复杂的,之前一直搞了1次高级的时候k8s,一段时间不用我自己都蒙圈了,所以这次不直接搭建k8s集群,先用一个线上的去感受,详细的解读下。主要在线体验一些概念和用法。

(一)kubernetes
  • ①它的历史

kubernetes其实源于希腊语意思(舵手,领航员)。由于不太好读也不太好写,就有了另一个名称叫k8s,kubernetes是谷歌在2014年开始实施的一个项目,当时google已经有了大规模服务容器管理的经验,内部Borg系统,负责对google内部的一些服务进行调度和管理,它的目的是让用户不必操心资源管理的问题,让他们专注自己的核心业务, 并且最大化数据中心的利用率。

  • ②官网

官网:https://kubernetes.io/

  • ③介绍

k8s是一个自动开源系统,自动化部署,扩缩容,管理容器化的应用。相比前面的mesos 和swarm,k8s的目的非常的单纯和明确,简单的来说他的目的就是为了服务编排,没有别的。这么明确的明确的目的。虽然目的简单但专注所以专业,非常灵活的使用方式,它考虑到服务服务落地过程中可能遇到的各种各样的问题,各种各样的场景。

  • ④写ppt已经让你听蒙圈,我用通俗的话解读k8s

我们假设有个住户社区,k8s就相当于这个社区的大房东,社区里面有一栋一栋的大楼,大楼可以看做虚拟机器,俗称的VM,大楼里面有很多的住户,每个住户就代表一个pod,那每个住户如何找到他们的位置呢?每个住户如何找到他们的位置就是通过门牌号,我们就理解为IP的位置,在每个住户里面有非常多的家庭成员,爸爸,妈妈,兄弟姐妹,爷爷奶奶,姥爷姥姥,女儿儿子,这些角色就可以理解为container,在这个pod里面的成员,就共享了这个房间里面的资源,水电网络,那些资源就可以把它理解成计算资源,ipu,内存,硬盘。对于大房东k8s,他最主要的功能就是管理,每个住户Pod使用多少资源,那为了就是让整栋大楼,会更有效率的使用很多资源,举例来说:A栋大楼住了太多的住户,太多的Pod,他们直接肯定会相互竞争资源的问题,那它就可以协调某一些pod,就是某一些住户搬到B大楼去,这样会让变得更加的均衡使用。

  • ⑤在线学习k8s

才入k8s,就先搭建环境,可能你从入门到放弃了,正如很多了解学习java的时候,都知道各种框架很重要,一定要先学会用在看源码,不要直接看源码各种概念不理解。这次学习k8s,直接在官方的在线网站学习,不需要为搭建环境痛苦。 https://www.katacoda.com/courses/kubernetes

(二)katacoda在线学习

它这里的课程还是相对比较简单的,都是一步一步操作的。

  • ①登录

可以使用google账号或者github账号进行的登录。

已经登录完毕

  • ②选择Launch A Single Node Cluster

点击开始学习,使用时长大概10到15分钟。也就是这个集群只能体验10到15分钟。

  • ③其次点击下面的红色框

启动minikube的集群

代码语言:javascript
复制
minikube version
minikube start
  • ④查看集群信息

查看启动完毕的k8s的集群信息

代码语言:javascript
复制
kubectl cluster-info
kubectl get nodes
  • ⑤点击执行第三步所有操作
  • ⑥点击执行第四步所有操作

k8s的web管理界面

  • ⑦进入k8s的dashboard管理界面
(二)kubernetes-dashboard的介绍
  • ①节点

点击 minikube 查看详情

  • ②创建节点

学习k8s经常用到的三种方式,yaml文件,通过文件的方式,直接命令的方式

输入创建应用

容器组-点击nginx的详情

(三)kubernetes 元素概念

这张图简单的描述了,k8s集群的样子,k8s肯定也需要一个集群,服务调度服务编排肯定要有机器,所以需要集群,中间的七边形是Master节点,可以理解为安装了核心组件的,另外的六边形标识的是Node节点,在k8s里面叫worker节点,然后每个节点里面有个kubelet服务和docker服务,

多了2个绿色部分,在master里面Deployment。在Node中就是Containerized app就是容器化的应用。图例就是在Master部署了一个Deployment,在三个节点选中了其中的一个部署了应用。Node中的蓝色圆圈标识的是pod。

  • ①pod

pod 是k8s中非常重要的一个概念,所有的应用和服务都是运行在pod里面的,pod是k8s中最小的一个单元,可以理解为k8s的一个原子,pod里面就是容器。

  1. 第一个pod有独立的IP地址,一个容器
  2. 第二个pod有独立的Ip地址,一个容器,一个磁盘存储
  3. 第三个pod有独立的Ip地址,两个容器,一个磁盘存储,这2个容器可以共享IP的,共享网络,共享磁盘的。
  4. 第三个pod有独立的Ip地址,三个容器,2个的磁盘存储,这3个容器可以共享IP的,共享网络,共享磁盘的。

PS:通过上边的4个小图,可以明白同一个pod里面可以有任意多个容器和存储。

知道了pod运行了容器,pod自己运行在哪里啊。运行在node,通过kubelet来进行的,调度kuelet把pod运行起来。一个node上面可以运行多个pod。只要资源足够可以建立多个pod。

  • ②service
  1. 中间是master节点
  2. 其余的是node节点
  3. 下面的这个node,里面运行了一个pod,pod的外边,有一层虚线,虚线标识service,pod的Ip(10.10.10.1),service(10.10.9.1),service和pod的Ip不同,pod是具体运行在一个node上的,如果pod或者node突然挂掉了,编排工具肯定在其他的node节点下重新起一个pod,这个pod肯定的ip也就变了。所以就需要一个serivce的概念,当pod出问题了,产生一个新的pod,新的pod就是一个新的ip,我们就可以通过service的方式找到pod。
  4. serivce的Ip跟service的生命周期是一致的,如果service不被删除的话,IP一直不发生变化。
  5. 上边这个2个node,三个pod,其实就是从一个实例变成了3个实例,进行了扩容,对外提供相同的服务,这时这个service,ip就有了另外2个作用,除了可以定位pod的地址,可以对pod地址进行负载均衡,进行轮询,

service的概念基本了解了,怎么确定哪些pod属于一个service,提出一个service的概念,service可能有一个或者是多个pod组成,如何定义service,怎么定义service。在k8s上通过Master的Label Selector的方式,比如s:app=A,s:app=B,有这种标签的确定输入pod等于A 或者pod等于B,所有标签一样的都属于我的小弟。这样service和pod的耦合就非常松。

PS:(梳理概念)pod里面包括N个容器,service里面包括pod,Deployment可能包括service或者是pod。

  • ③deployment
  1. Master里面发布了一个Deplyment,想给service 进行扩容
  2. 其实内部是扩容的pod,service只是一个逻辑存在的东西
  3. 把一组pod形成一个逻辑组就是service,扩容完成后,其他两个节点就有了pod实例。
  4. service就开始对外的负载均衡endpoint找到对应的pod

滚动更新,停掉了一个旧的pod,启动一个新的pod,这时service既有新的,也有旧的存在,直到所有的旧的都更新完毕才结束。所有的更新和扩容的过程serivce的Ip始终是保持不变的。

  • ④Namespace

一般在开发中有开发,测试,准生产,生产环境。Namespace 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的 pods, services,deployments 等都是属于某一个 namespace 的(默认是default),而 Node, PersistentVolumes 等则不属于任何 namespace。相互之前是隔离的。

PS:这几个概念一定要理解,对之后的k8s学习非常重要,可以根据我写的关于住户社区的这个概念来理解。

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

本文分享自 编程坑太多 微信公众号,前往查看

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

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

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