聊聊k8s(文末送书~)(代码片段)

飘渺Jam 飘渺Jam     2023-03-22     427

关键词:

大家好,我是飘渺。

有不少人问什么是K8S,其实这很好理解。K8S就是Kubernetes的简称,取收尾两个字母K和S,剩下中间8个字母使用数字8代替,就成为了K8S。

开个玩笑,本文从开发人员的视角带大家理解一下Kubernetes。当然,文末还会给你送上一份惊喜。

概述

在JAVA开发中使用 docker run命令配合上自建的Docker仓库可以很容易部署JAVA服务,但是使用Docker部署应用会有几个问题:

  1. 一个docker run 不是部署服务的可靠方法,因为它创建的容器在单个机器运行。虽然Docker引擎提供了一些基本的管理功能,例如在容器崩溃或计算器重启时自动重启容器。但是它不能处理机器崩溃。无法保证服务的高可用!

  2. 另一个问题是服务通常不是孤立存在,而是相互依赖的,例如数据库和消息队列。我们通常需要将服务及其依赖项作为一个单元部署或取消部署。

在开发过程中特别好用的方法是使用Docker Compose。Docker Compose是一个工具,它允许使用YAML文件以声明方式定义一组容器,然后以组的形式启动和停止这些容器。

但是使用Docker Compose也有个很明显的问题就是它仅限于一台机器。要可靠的部署服务,必须使用Docker编排框架,例如Kubernetes。

Kubernetes简介

Kubernates是一个Docker编排框架,是Docker之上的一个软件层,它将一组计算机硬件资源转变成用于运行服务的单一资源池。它努力保持每个服务所需要的实例数量,并确保它们一直在线,即使服务实例或机器崩溃也是如此。容器的灵活性和Kubernetes的复杂性相结合是部署服务的一种强有力的方式。

Kubernetes有三个主要功能:

  • 资源管理:将一组计算机视为由CPU、内存和存储卷构成的资源池,将计算机集群视为一台计算机。

  • 调度:选择要运行容器的机器。默认情况下,调度考虑容器的资源需求和每个节点的可用资源。它还可以实现在同一节点部署具有亲和性(affinity)的容器,或保持特定几个容器分散部署在不同的节点上(反亲和性,anti-affinity)

  • 服务管理:实现命名和版本化服务的概念,这个概念可以直接映射到微服务架构中的具体服务。编排框架确保始终运行所需数量的正常实例。它实现请求的负载均衡。编排框架也可以执行服务的滚动升级,并允许你回滚到旧版本。

Kubernetes架构

Kubernetes架构

Kubernetes在一组机器上运行。Kubernetes集群中的计算机角色分为主节点和普通节点。集群中只有很少的几个主节点(可能只有一个)和很多普通节点。

主节点负责管理集群。Kubernetes的普通节点称为 “工作节点”,它会运行一个或多个Pod。Pod是Kubernetes的部署单元,由一组容器组成。

主节点运行多个组件,包括以下内容:

  • API服务器:用于部署和管理服务的REST API,例如,可被kubectl命令行使用。

  • Etcd:存储集群数据键值的NoSQL数据库。

  • 调度器:选择要运行POD的节点。

  • 控制器管理器:运行控制器,确保集群状态与预期状态匹配。例如,一种被称为 复制(replication)控制器 的控制器通过启动和终止实例来确保运行所需要的服务实例。

普通节点运行多个组件,包括以下内容:

  • Kubelet:创建和管理节点上运行的Pod。

  • Kube-proxy:管理网络,包括跨Pod的负载均衡。

  • Pods:应用程序服务。

接下来我们看一下Kubernetes上部署服务需要掌握的关键Kubernetes概念,掌握这几个概念就抓住了Kubernetes的核心。

Kubernetes的关键概念

Kubernetes是很复杂的,但是,一旦掌握了一些 关键对象 的概念,就可以高效的使用Kubernetes。Kubernetes定义了许多类型的对象,从开发人员的角度来看,最重要的对象如下:

  • Pod:

    Pod是Kubernetes的基本部署单元。它由一个或多个共享IP地址和存储卷的容器组成。服务实例的pod通常由单个容器组成,例如运行 JVM 的容器。但在某些情况下,Pod包含一个或多个实现支持功能的 「边车」(sidecar)容器。例如,Nginx 服务器可以有一个边车容器,定期执行 git pull 以下载最新版本的网站。Pod的生命周期很短,因为Pod的容器或它运行的节点可能会崩溃。

  • Deployment:

    Deployment : Pod 的声明性规范。Deployment是一个控制器,可确保始终运行所需数量的Pod实例 (服务实例)。它通过滚动升级和回滚来支持版本控制。

  • Service:

    向应用程序服务的客户端提供的一个静态/稳定的网络地址。它是基础设施提供的服务发现的一种形式。每个 Service具有一个 IP 地址和一个可解析为该 IP 地址的 DNS 名称,并跨一个或多个 Pod对 TCP 和 UDP 流量进行负载均衡处理。IP地址和 DNS 名称只能在Kubernetes内部访问。

    Service默认是使用ClusterIp模式,如果需要外部能访问到这个Service则需要使用另外两种类型的对象:NodePort 和 LoadBalancer。

  • ConfigMap:

    名称与值对的命名集合,用于定义一个或多个应用程序服务的外部化配置。Pod容器的定义可以引用ConfigMap来定义容器的环境变量。它还可以使用ConfigMap在容器内创建配置文件。可以使用Secret来存储敏感信息(如密码),它也是 ConfigMap的一种形式。

文末送书

看到这里的同学先别急着关掉,今天联合清华大学出版社给大家带来两本刚上架的新书《云原生Kubernetes全栈架构师实战》。

本书不仅介绍了Kubernetes生产级高可用架构、Kubernetes基础及进阶知识、高级调度、服务发布以及稍复杂的Kubernetes持久化及权限管理、包管理工具Helm和Operator的使用,同时也介绍了基于Prometheus的监控告警、基于Jenkins+Harbor+GitLab+Kubernetes实现DevOps平台建设,还介绍了Kubernetes周边一些CNCF孵化的项目等,涵盖了大部分技术人员都会遇到的Kubernetes技术难点及企业中一些比较常见的技术方案。特别是,书中的案例都来自于生产一线,并经过多次验证,可以直接用于生产环境。

怎么送?

老规矩,在本文留言并将此文转发至朋友圈,从精选留言中随机抽取两位同学,然后凭借朋友圈转发记录领取,给你免费包邮到家!当然,不差钱的也可以通过下方链接直接购买。

《云原生Kubernetes全栈架构师实战》

  https://item.jd.com/13751006.html

文末送书知识体系目录(代码片段)

...模板、PPT模板、知识体系、面试题库、技术互助。直接去文末领取🍅包邮送书活动:点赞收藏评论本文即可参与抽奖(详见文末 查看详情

破案了....|文末送书(代码片段)

直接跳到末尾:读者福利赠4本书籍!🔥《Kafka运维管控平台》🔥✏️更强大的管控能力✏️🎾更高效的问题定位能力🎾🌅更便捷的集群运维能力🌅🎼更专业的资源治理🎼🌞更友好的运维... 查看详情

数据采集三道小实验|文末送书✨(代码片段)

🎉粉丝福利送书:《Hadoop+spark+Python大数据处理从算法到实战》🎉点赞👍收藏⭐留言📝即可参与抽奖送书🎉下周三(10月7日)晚上20:00将会在【点赞区和评论区】抽一位粉丝送这本书~🙉Ἰ... 查看详情

文末送书知识体系目录2万字,删减成1999(代码片段)

...模板、PPT模板、知识体系、面试题库、技术互助。直接去文末领取🍅包邮送书活动:点赞收藏评论本文即可参与抽奖(详见文末 查看详情

机器学习图解vgg与resnet(文末送书)(代码片段)

🎉粉丝福利送书:《自然语言处理NLP从入门到项目实战》🎉点赞👍收藏⭐留言📝即可参与抽奖送书🎉下周二(12月28日)晚上20:00将会在【点赞区和评论区】抽一位粉丝送这本北京大学出版社的书~Ƕ... 查看详情

(文末送书)字符数组与字符串(代码片段)

字符数组与字符串引言字符数组的定义与初始化字符串的概念与存储常用的字符串处理函数送书福利引言前面介绍的一维数组与二维数组都是以数值型为例,其实数组中也可以存储字符型数组,称为字符数组。字符数组... 查看详情

本想试试看,结果却拿到了京东的offer|文末送书(代码片段)

本想试试看,结果却拿到了京东的Offer|文末送书最近,春招已经基本接近尾声了,我找了几位拿到名企Offer的粉丝,请他们总结了面试经验,近期会分批的推送给大家。希望给那些正在准备秋招的同学提供些帮助。今天给大家分... 查看详情

讲讲python中的函数传递问题文末送书(代码片段)

...再把函数的其他部分补充一下,稍微轻松简单一些。文末评论送书,学委会用这个抽奖程序来进行严格抽奖,周六晚上10点整定时抽奖并视频公布出来,敬请期待。函数参数如何传递key-val 查看详情

讲讲python中的函数传递问题文末送书(代码片段)

...再把函数的其他部分补充一下,稍微轻松简单一些。文末评论送书,学委会用这个抽奖程序来进行严格抽奖,周六晚上10点整定时抽奖并视频公布出来,敬请期待。函数参数如何传递key-val 查看详情

《吊打面试官》系列-concurrenthashmap&hashtable(文末送书)(代码片段)

你知道的越多,你不知道的越多前言作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚(请允许我使用一下夸张的修辞手法)。于是在一个寂寞难耐的... 查看详情

使用vite插件自动化实现骨架屏|文末送书(代码片段)

作者:橙红年代原文:https://juejin.cn/post/7152406737100734495骨架屏在SPA应用中有两个显著提升用户体验的作用避免页面初始化加载时的空白,体验介于SSR和完全等待页面初始化完成之间避免部分路由组件需要加载数据完成... 查看详情

使用vite插件自动化实现骨架屏|文末送书(代码片段)

作者:橙红年代原文:https://juejin.cn/post/7152406737100734495骨架屏在SPA应用中有两个显著提升用户体验的作用避免页面初始化加载时的空白,体验介于SSR和完全等待页面初始化完成之间避免部分路由组件需要加载数据完成... 查看详情

python中处理字符串的常用函数汇总文末送书(代码片段)

正式的Python专栏第23篇,同学站住,别错过这个从0开始的文章!今天我们说了字符串的基础,格式化,这次我们讲解字符串的常用函数,不要错过!(文本送书,评论区抽取一位送书)前两... 查看详情

python中处理字符串的常用函数汇总文末送书(代码片段)

正式的Python专栏第23篇,同学站住,别错过这个从0开始的文章!今天我们说了字符串的基础,格式化,这次我们讲解字符串的常用函数,不要错过!(文本送书,评论区抽取一位送书)前两... 查看详情

kafka如何修改分区leader|文末送书8本(代码片段)

直接跳到末尾:读者福利赠8本书籍!🔥《Kafka运维管控平台》🔥✏️更强大的管控能力✏️🎾更高效的问题定位能力🎾🌅更便捷的集群运维能力🌅🎼更专业的资源治理🎼🌞更友好的运维... 查看详情

实战,springboot中如何解决cors跨域问题~(文末送书)(代码片段)

CORS(Cross-OriginResourceSharing)"跨域资源共享",是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制。在前后分离的架构下,我们经常会遇到跨域CORS问题,... 查看详情

go开源宝藏jwt-go鉴权|中间件(文末送书嗷~)(代码片段)

🎉粉丝福利送书:《Go语言区块链应用开发从入门到精通》🎉点赞👍收藏⭐留言📝即可参与抽奖送书🎉下周三(9月22日)晚上20:00将会在【点赞区和评论区】抽一位粉丝送这本书~🙉🎉详情请... 查看详情

老板:kill-9的原理都不知道就敢到线上执行,明天不用来了!|文末送书(代码片段)

...kill-9的原理都不知道就敢到线上执行,明天不用来了!|文末送书收录于话题#搞不好就容易被辞退7个△Hollis,一个对Coding有着独特追求的人△这是Hollis的第270篇原创分享作者lHollis来源lHollis(ID:hollischuang)相信很多程序员对于Linu... 查看详情