K8s基本概念入门
序言
没等到风来,绵绵小雨,所以写个随笔,聊聊k8s的基本概念。
k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。那么,问题来了,要运维何用?
k8s可以更快的更新新版本,打包应用,更新的时候可以做到不用中断服务,服务器故障不用停机,从开发环境到测试环境到生产环境的迁移极其方便,一个配置文件搞定,一次生成image,到处运行。。。
k8s的全生命周期管理
在k8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。
1、创建集群:为什么要使用集群?
有一句古话叫做三个臭皮匠,赛过诸葛亮,这就是创建集群的原因。。。
使用集群,create cluster是为了掩盖底层的无能,在各种环境中,底层的硬件各不相同,有的是各种低廉的服务器,有的各种云环境,有的是各种vm,有的各种host machine,要想屏蔽底层的细节,增强可靠性和稳定性,从而需要创建集群。
创建集群的好处就是,统一对外提供接口,无须进行各种复杂的调用;提供更好的可靠性,服务器宕机那么频繁,物理磁盘那么容易损坏,无须担心,集群统一进行调配;提供更好的性能,组合集群中各个机器的计算存储网络资源,提供更好的TPS和PS;提供横向扩容的能力,在进行横向扩容的时候,性能基本上能呈线性增长。
集群看起来很牛,那么创建起来很复杂么?并不会,在k8s只要使用两条指令就可以创建一个集群,一个是kubectl init进行初始化,创建一个master节点,第二条指令就是kubectl join xxx创建一个node节点,加入这个集群。
在这边可以看到k8s在物理上进行划分的时候,划分了两种类型的主机,一个master节点,主要用来调度,控制集群的资源等功能;而node节点,主要是用来运行容器的节点,也就是运行服务的节点。
其实集群都差不多,master用来控制,用来存储各种元数据,node节点是一个工作节点,真正来干活的;node节点定时与master进行通信,通过kubelet进程来汇报信息。
创建了集群,我要怎么看信息?如下:
2、 部署应用
使用集群的主要目标是啥?用来提供服务,让开发开发的应用程序能在集群上运行,从而需要让开发能运行一个应用来进行测试。
一条指令就能运行一个服务,有了image之后就是这么简单。所以,在开发完成程序之后,需要将程序打包成image,然后放到registry中,然后就能够运行应用了。
在部署完成应用之后,就可以看到应用的名称,期望状态是运行一个pod,当前有一个pod,活动的也是一个,还有启动的时间,那么什么是pod呢?
在k8s里面,集群调度的最小单元就是一个pod,一个pod可以是一个容器,也可以是多个容器,例如你运行一个程序,其中使用了nginx,使用mysql了,使用了jetty,那么可以将这三个使用在同一个pod中,对他们提供统一的调配能力,一个pod只能运行在一个主机上,而一个主机上可以有多个pod。
那么有人会问,为什么要使用pod,为什么不能直接使用容器呢?使用pod,相当与一个逻辑主机,还记得创建一个vm,在vm上运行几个进程么,其实道理是一样的,pod的存在主要是让几个紧密连接的几个容器之间共享资源,例如ip地址,共享存储等信息。如果直接调度容器的话,那么几个容器可能运行在不同的主机上,这样就增加了系统的复杂性。
3、发布应用
发布应用主要就是对外提供服务,可能会有人提出疑问,我都运行了服务,为什么还不能提供服务,这是因为在集群当中,创建的ip地址等资源,只有在同一个集群中才能访问,每个pod也有独一的ip地址,当有多个pod提供相同的服务的时候,就需要有负载均衡的能力,从而这里就涉及到一个概念就是service,专门用来提供服务的。
服务主要是用来提供外界访问的接口,服务可以关联一组pod,这些pod的ip地址各不相同,而service相当于一个复杂均衡的vip,用来指向各个pod,当pod的ip地址发生改变之后,也能做到自动进行负载均衡,在关联的时候,service和pod之间主要通过label来关联,也就是标签(-l表示为label)。
从而外界就可以访问此应用了,如下:
4、 扩容缩容
在业务上线之后,碰到了双十一怎么办?扩容。。。万剑归宗,只要有一个pod,那么就可以产生无数个pod。。。。
过了双十一怎么办,缩容。。。
横向扩展的能力。。每次扩容缩容的时候,这种会不会觉得很方便,一句话的事儿。。不用创建vm,不用去部署中间件,不用去各种修改配置,这就是自动化。。。
5、 更新
有新版本了,我要发布。。。那么。。。
滚动更新。。。根据新的image创建一个pod,分配各种资源,然后自动负载均衡,删除老的pod,然后继续更新。。。。不会中断服务。。。
更新错了怎么办,不怂,不会影响生产业务,回滚就好了。。。几秒钟的事儿。。。
后话
k8s的基本入门,其实算是一种用户视角,只是用来演示如何使用k8s,怎么提高了生产力而已。
在给客户演示的时候,为啥要选择k8s?主要就是如何提高了发布的效率,更新版本的效率,更方便更快捷的上线新版本。
但是在运维关注的视角下,这些远远不够。。。master?存储了哪些元数据,存储在etcd中?如何来进行监控?在很多很多系统情况下,怎么来部署k8s,是一个项目一个k8s还是一个k8s多个项目?等等一系列的问题。。。
---------------------
本文来自 运维Linux和python 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/TM6zNf87MDG7Bo/article/details/79621510?utm_source=copy
K8s基本概念入门的更多相关文章
- Docker K8s基本概念入门
原文地址:https://blog.csdn.net/TM6zNf87MDG7Bo/article/details/79621510 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具 ...
- k8s概念入门
k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个 ...
- [转帖]新手必读,16个概念入门 Kubernetes
新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教 ...
- 【转】kafka概念入门[一]
转载的,原文:http://www.cnblogs.com/intsmaze/p/6386616.html ---------------------------------------------- ...
- ASP.NET Core on K8S学习初探(2)K8S基本概念快速一览
在上一篇<单节点环境搭建>中,通过Docker for Windows在Windows开发机中搭建了一个单节点的K8S环境,接下来就是动人心弦的部署ASP.NET Core API到K8S ...
- k8s学习 - 概念 - master/node
k8s学习 - 概念 - master/node 在k8s中,有各种各样的概念和术语.这些概念是必须要学习和掌握的.我们先罗列下所有概念,然后再一个个看具体实例. 大概说一下这些概念: Master: ...
- k8s学习 - 概念 - Pod
k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...
- k8s学习 - 概念 - ReplicationController
k8s学习 - 概念 - ReplicationController 我们有了 pod,那么就需要对 pod 进行控制,就是同一个服务的 podv我需要启动几个?如果需要扩容了,怎么办?这里就有个控制 ...
- k8s学习 - 概念 - ReplicaSet
k8s学习 - 概念 - ReplicaSet 首先,ReplicaSet 和 ReplicationController 基本上一样,除了上篇说到的selector有不同之外,没有啥区别.(官网也是 ...
随机推荐
- 使用Win10自带的截图工具
Win10自带的截图工具还是可以的,快捷键win+shift+s 截完图之后会有一个通知,你可以对截图进行二次编辑,编辑之后默认是立即保存的 再搭配着Fu图床工具使用,简直太爽了 讲一下怎么打开通知
- 【npm permission denied错误】npm ERR! Error: EACCES: permission denied, access
在命令前加上 sudo sudo npm install --save-dev grunt 不过这样子可能还是不行,你需要这样: sudo npm install --unsafe-perm=true ...
- UE4 移动物体的几种方法
转自:https://dawnarc.com/2016/06/ue4%E7%A7%BB%E5%8A%A8%E7%89%A9%E4%BD%93%E7%9A%84%E5%87%A0%E7%A7%8D%E6 ...
- 基于zynq 7020的串口UART中断实验
1.参考 UG585,P1790[JokerのZYNQ7020]UART学会Zynq(27)UART中断驱动模式示例 2.理论知识 在ZYNQ的中断中有一个IOP的中断集,它包几个外设的中断,其中包含 ...
- WebDriver常用的api
WebDriver常用的api 获取window对象 Window window = driver.manage().window(); 1) 窗口最大化 Maximize() 2) 窗口大小 g ...
- 分页Model
<?php namespace Admin\Model; use Think\Model; class PageModel extends Model{ /* *此函数分页函数.传入表名和当前页 ...
- 寻找最小矩形边框--OpenCv
好久没有写博客了 今天写一下比较常用的寻找矩形边框 ////////////////////////////寻找最矩形边框/////////////////////////////////////// ...
- excel数据分析流程
1.获取数据 2.去掉空值.空行.重复行 3.去掉无用行,筛选出需要行 4.分组数据 5.数据排序
- C# 快捷键(总结)
C# 展开和折叠代码的快捷键 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + ...
- windows桌面远程连接突然不能双向复制文件
远程桌面连接windows 2008,突然无法在本地和服务器之间互相复制文件.根据微软的说明,由rdpclip.exe进程来控制,打开远程服务器的任务管理器,看到rdpclip.exe进程存在,即可进 ...