k8s概率与实际应用

发布时间 2023-07-23 00:21:36作者: 冼润伟

前言:  

  k8s的全称是kubernetes,取头尾的字母中间有8个字母所以简称为k8s,它的诞生是为了解决庞大的集群管理,提供了更为便捷的管理方案;由于k8s是一个庞大的集群管理平台,所以此文只介绍简单的使用方式和一些需要了解的基础感念;在工作中,我们极少可能会自己搭建k8s所以此文也不去接受如何搭建,而且在我就职的公司也不是自己搭建的而是使用阿里云的k8s,基本大部分中小企业都会去买云服务,这样可以大大节省运维成本;那么我们来看看我们需要了解的哪些的基础知识就能顺利上手。

一、k8s架构

  在学习每个工具前,我们都需要去了解工具的基本架构,在k8s我们2大节点,一个是master节点,另外一个是worker节点,主节点主要解决的是节点间的调度,监控等工作,二从节点是实际运作pod的节点所以也称工作节点;下面我们来看看架构图。

  master节点:

    1.apiserver:用于交互的出入口;

    2.etcd:是k8s的数据库,常用于储存设置等

    3.scheduler:调度pod运行

    4.controller-manager-监控运维

  worker节点:

    1.kubelet ,与apiserver通信和节点的代理

    2.kube-proxy,转发tcp/udp和实现反向代理

    3.container-runtime,正在运作pod的对象,管理pod的生命

二、pod和yaml说明

  pod的主要作用是对容器的隔离并且能让容器互相直接能访问,简单而言就是在容器的上面封装一层,例如一个三室的套房,每个房间都是独立却又能互相访问的。而yaml既是对pod使用的配置文件(即yaml来描述的api对象),而重点对象既是(kind:资源对象的类型,比如 Pod、Node、Job、Service)等等其他配置对象,需要我们慢慢去了解;

三、基础资源对象了解

  1.Job/CronJob:job为临时任务,跑完一次就不跑了,cronjob为定时任务

  2.ConfigMap/Secret:ConfigMap是明文方式保存配置信息,Secret密文的方式来保存配置信息,比如密码、密钥、证书

  3.Deployment:作用多用于部署无状态应用服务,能让应用永不宕机

  4.StatefulSet:有状态服务,特性:保持Pod启动顺序和唯一性,稳定,唯一的网络标识符,有序,优雅的部署和扩展、删除和终止(例如:mysql主从关系,先启动主,再启动从),主要场景比如mysql,Redis等

  5.DaemonSet:作用与deployment一致(实际是做一个守护进程的控制器),只是唯一区别在于它在节点中只能有一个,一个节点一个daemonset;作用区别做网络代理,应用监控,应用日志等

  6.Service:作用集群内部的负载均衡机制,负责服务发现,属于四层负载均衡(一组Pod访问策略,提供cluster-IP群集之间通讯)

  7.Ingress:作用:网关,七层服负载

  8.PersistentVolume:是 Kubernetes 对存储设备的抽象,由系统管理员维护,需要描述清楚存储设备的类型、访问模式、容量等信息

四、阿里云基本配置

  对上面的基础对象有了一定的了解后,我们可以试试在阿里云或者腾讯云做一个实操,本人在2个大服务商都实操过,腾讯云实操来说入门可能会好些而且价格便宜些,但我们公司实际使用的阿里云,所以下面我就来讲讲阿里云如何建立一个无状态服务。

  第一步:我们购买的是容器版的k8s,所以我们第一步就是去创建容器镜像,以下是我通过dockerfile文件生成的镜像,并上传到阿里云的操作(需要保证的是仓库状态是正常的)

  第二步:就是来建立属于我们自己的无状态服务了

      1.k8s建立自己的namespace

      2.在镜像也可进行创建pod服务

    3.需要设置免密或者加密来拉取镜像,否则会出现拉取镜像失败

    4.免密登录需要设置acr-configuration,instanceId是企业用户用的,个人用户可填空,另外那个是镜像的地域,可在镜像管理中查看

    5.建立service和ingress,因为我们需要对外访问

     6.创建成功状态

    7.最后在网关找到地址看看访问效果

   总结:此文介绍了k8s基本概念,1.k8s架构,2.pod和yaml的说明,3.常用资源对象,4,阿里云配置无状态服务;四方面来让我们了解k8s,当然在生产环境中我们还可以介入自动化构建等基础设施建设,实际的生产环境我们还需要编写一定shell脚本,k8s里面还有许多功能和用法,如灰度发布等等,需要我们自行去学习与操作,我就职的公司目前就是使用k8s来搭建整个saas体系的微服务,并且我们的qps和tps都是非常高,基本是5-6千左右,整个系统框架体系都非常庞大,也拆分很多个微服务,并且我们的客户群体还在逐步的上升,整个系统的吞吐量都在不断的上升,在日常工作都要经常的优化代码,数据库语句,数据归档,数据读写分离等内容,也涉及很多现有主流技术,后面的文章会详细的介绍我们的基本架构体系是如何搭建,如何实现高吞吐的。