k8s基本概念入门

liyupi liyupi     2023-01-05     477

关键词:

序言

    没等到风来,绵绵小雨,所以写个随笔,聊聊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 



dockerk8s基本概念入门

原文地址:https://blog.csdn.net/TM6zNf87MDG7Bo/article/details/79621510 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且... 查看详情

k8s的基本概念与基本功能(代码片段)

k8s的基本概念与基本功能k8s基本概念kubernetes架构Master节点Master是KubernetesCluster的大脑,运行着如下Daemon服务:kube-apiserver、kube-scheduler、kubecontroller-manager、etcd和Pod网络。APIServer(kube-apiserver)APIServer提供HTTP/HTTPSRESTfulA 查看详情

k8s基本概念-如何使用services

k8s基本概念-如何使用Services2018/1/5Services使用示例VirtualIPsandserviceproxiesPublishingservices-servicetypes通过命令行来控制Service通过yaml配置文件来定义ServiceVirtualIPsandserviceproxiesProxy-mode:userspace轮询Proxy-mode:iptable 查看详情

k8s基本概念-如何使用私有regsitry

k8s基本概念-如何使用私有regsitry2018/1/9私有regsitry使用示例准备资源通过secret来使用关联到serviceAccounts准备资源一个私有regsitry地址、账号、密码通过secret来使用###命令行登录一次regsitry后,生成配置:~/.docker/config.json[[email pro... 查看详情

k8s基本概念

一.组件介绍1.Master(管理)组件  a.kube-apiserver  b.kube-controller-manager  c.kube-scheduler  d.cloud-controller-manager  e.etcd(保存集群数据)2.Node(节点)组件  a.kubelet  b.kube-proxy  c.docker 查看详情

k8s基本概念-如何使用deployments

k8s基本概念-如何使用Deployments2018/1/5Deployments使用示例创建一个app查看app状态更新app回滚app扩缩容app删除app创建一个app通过yaml配置文件来定义Deployment关于apiVersion的写法,请参考:https://github.com/kubernetes/kubernetes/blob/630dbedef9de9ef678f... 查看详情

k8s基本概念和各服务组件描述等

文章目录k8s概述什么是k8s为什么使用k8sK8S解决了裸跑Docker的若干痛点K8S的特性Kubernetes集群架构与组件K8S的核心组件介绍Master组件Kube-apiserverKube-controller-managerkube-schedulerNode组件KubeletKube-Proxydocker或rocketetcdKubernetes核心概念PodPod控制... 查看详情

k8s基本概念和各服务组件描述等

文章目录k8s概述什么是k8s为什么使用k8sK8S解决了裸跑Docker的若干痛点K8S的特性Kubernetes集群架构与组件K8S的核心组件介绍Master组件Kube-apiserverKube-controller-managerkube-schedulerNode组件KubeletKube-Proxydocker或rocketetcdKubernetes核心概念PodPod控制... 查看详情

k8s基本概念和术语(代码片段)

文章目录一、k8s是什么?二、Cgroup的作用?1.swap分区的作用?2.kubeadm,kubelet和kubectl三.如何知道我们的docker软件安装了没有?四.k8s的容器编排功能,它的实现背后有哪些东西?五.Deployment控制器六.k8s术语和... 查看详情

kubernetes学习记录:k8s的架构和基本概念

...部署、扩展和管理容器化应用程序的开源系统 1.1k8s的基本架构 和一些分布式存储和分布式数据库集群类似,在k8s集群中,也存在着master节点和node节点其中master节点主要负责pod调度、服务注册、服务发现等一系列管理相... 查看详情

k8s读书笔记-kubernetes基本概念和术语(上)(代码片段)

k8s资源控制系统k8s中大部分概念如:Node、Pod、ReplicationController、RS、Deployment、Service等都可以被看作一种资源对象,激活所有的资源对象都可以通过k8s提供kubectl工具(或者API编程调用)执行CRUD等操作并将其保存在... 查看详情

k8s实战一:基本概念与命令(代码片段)

1:NamesSpace:名称空间用来隔离资源不隔离网络    常用命令:#创建名称空间kubectlcreatenshello#删除名称空间kubectldeletenshello#查看集群命名空间kubectlgetns#通过配置文件创建:vimhello.yaml添加如下内容,然后运行kubectlapply-fh... 查看详情

k8s基本概念(代码片段)

一、k8s基本概念k8s大部分概念比如Node,Pod、RC,service等都可以看做一种资源对象,几乎所有的资源对象都可以通过k8s提供的kubectl工具执行增,删,改,查等操作并将其保存在etcd中持久化存储。二、mastermaster指的是集群控制节点... 查看详情

k8s读书笔记-kubernetes基本概念和术语(下)(代码片段)

DevOps前言上一篇文章中,我们介绍了k8s中的Master、Node、Pod、Label、RC&RS、Deployment、HPA&VPA、DaemonSet这些资源对象信息,接下来我们继续介绍k8s中常用的资源对象。StatefulSet在k8s系统中,Pod的管理对象RC、Deployment、D... 查看详情

从入门到上手:什么是k8s持久卷?(代码片段)

本文是介绍Kubernetes的基本概念的系列文章之一,在第一篇文章中,我们简单介绍了持久卷(PersistentVolumes)。在本文中,我们将学习如何设置数据持久性,并将编写Kubernetes脚本以将我们的Pod连接到持久卷。在此示例中,将使用Az... 查看详情

k8s架构基本概念

kubectl:k8s是命令行端,用来发送客户的操作指令。APIserver:是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源。它提供了HTTP/HTTPSRESTfulAPI,即K8SAPI.Scheduler:负责决定将Pod放在哪个Node上运行。在... 查看详情

干货分享,docker+k8s入门必备

...1天掌握Docker》:http://edu.51cto.com/course/16503.html概要:核心概念,应用场景,安装,镜像,容器,数据卷,Dockerfile,镜像仓库,案例《26讲1天入门Kubernetes》:http://edu.51cto.com/course/16518.html概要:核心概念,二进制与kubeadm部署,Kubectl,YA... 查看详情

k8s架构,(基本概念)

Kubectl:k8s是命令行端,用来发送客户的操作指令APIserver:是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过它管理k8s集群的各种资源,他提供了http/httpsRESTfulAPI即k8sAPIScheduler:负责决定将pod放在那个node节点上运... 查看详情