热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kubernetes概述及快速入门

概述官网https:kubernetes.iogithubhttps:github.comkuberneteskubernetes由来:谷歌的Borg系统,后经go语言重写并捐献给

概述

  • 官网 https://kubernetes.io/
  • github https://github.com/kubernetes/kubernetes
  • 由来: 谷歌的Borg系统,后经go语言重写并捐献给CNCF基金会开源
  • 含义: 舵手/飞行员, K8S
  • 重要作用: 开源的容器编排框架工具(生态极其丰富)
  • 意义: 解决跑裸docker的若干痛点

kubernetes优势

  • 自动装箱,水平扩展,自我修复
  • 服务发现和负载均衡
  • 自动发布(默认滚动发布模式)和回滚
  • 集中化配置管理和**管理
  • 存储编排
  • 任务批处理运行

基本概念

  • pod/pod控制器
  • name/namespace
  • label/label选择器
  • service/ingress

Pod

  • pod时K8S中能够被运行的最小逻辑单元(原子单元)
  • 1个pod里面可以运行多个容器,它们共享UTS+NET+IPC名称空间
  • 一个pod里运行多个容器,又叫: 边车(SideCar)模式

Pod控制器

  • pod控制器时pod启动的一种模板,用来保证在K8S里启动的pod应始终按照人们的预期运行(副本数、生命周期、健康状态检查…)
  • K8S内提供了众多的pod控制器
    • Deployment
    • DaemonSet
    • ReplicaSet
    • StatefulSet
    • Job
    • Cronjob

Name

  • K8S内部使用资源来定义每种逻辑概念(功能),每种资源都有自己的名称
  • 资源 有api版本(apiVersion)、 类别(kind)、元数据(metadata)、定义清单(spec)、状态(status)等配置信息
  • 名称通常定义在资源的元数据信息中

Namespace

  • 随着项目增多,人员增加,集群规模的扩大,需要一种能够隔离K8S内各种资源的方法,就是名称空间
  • 名称空间可以理解为K8S内部的虚拟集群组
  • 不同名称空间内的资源,名称可以相同,相同名称空间内的同种资源,名称不能相同
  • 合理的使用K8S的名称空间,使得集群管理员能够更好的交付到K8S里的服务进行分类管理和浏览
  • K8S里默认存在的名称空间有: defaultkube-systemkube-public
  • 查询K8S里特定资源要带上相应的名称空间

Label

  • 标签是K8S特色的管理方式,便于分类管理资源对象
  • 一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系
  • 一个资源拥有多个标签,可以实现不同维度的管理
  • 标签的组成: key=value
  • 与标签类似的,还有一种“注解” (annotations

Label选择器

  • 给资源打上标签后,可以使用标签选择器过滤指定的标签
  • 标签选择器目前有两个: 基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在)
  • 许多资源支持内嵌标签选择器字段
    • matchLabels
    • matchExpressions

Service

  • 在K8S中,虽然每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失
  • Service(服务)就是用来解决这个问题的核心概念
  • 一个Service可以看作一组提供相同服务的Pod的对外访问接口
  • Service作用于哪些Pod是通过标签选择器来定义的

Ingress

  • Ingress是K8S集群里工作在OSI网络参考模型下,第7层的应用,对外暴露的接口
  • Service只能进行L4流量调度,表现形式是 ip+port
  • Ingress则可以调度不同业务域,不同URL访问路径的业务流量

核心组件

  • 配置存储中心 -> etcd服务
  • 主控(master)节点
    • kube-apiserver服务
    • kube-controller-manager服务
    • kube-scheduler服务
  • 运算(node)节点
    • kube-kubelet服务
    • kube-proxy服务

CLI客户端

  • kubectl

核心附件

  • CNI网络插件 -> flannel/calico
  • 服务发现用插件 -> coredns
  • 服务暴露用插件 -> traefix
  • GUI管理插件 -> Dashboard

apiserver

  • 提供了集群管理的REST API接口(包括鉴权、数据校验及集群状态变更)
  • 负责其它模块之间的数据交互,承担通信枢纽功能
  • 是资源配额控制的入口
  • 提供完备的集群安全机制

controller-manager

  • 由一系列控制器组成,通过apiserver监控整个集群的状态,并确保集群处于预期的工作状态
  • Node Controller
  • Deployment Controller
  • Service Controller
  • Volume Controller
  • Endpoint Controller
  • Garbage Controller
  • Namespace Controller
  • Job Controller
  • Resource quta Controller

scheduler

  • 主要功能是接收调度pod到合适的运算节点上
  • 预选策略(predict)
  • 优选策略(priorities)

kubelet

  • kubelet的主要功能是定时从某个地方获取节点上pod的期望状态(运行什么容器、运行的副本数量、网络或存储如何配置等等),并调用对应的容器平台接口达到这个状态
  • 定时汇报当前节点的状态给apiserver,以供调度的时候使用
  • 镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源

kube-proxy

  • 是K8S在每个节点上运行网络代理,service资源的载体

  • 建立了pod网络和集群网络的关系(clusterip -> podip)

  • 常用三种流量调度模式

    • Userspace(废弃)
    • iptables(濒临废弃)
    • IPVS (推荐)
  • 负责建立和删除包括更新调度规则、通知apiserver自己的更新,或者从apiserver那里获取其它kube-proxy的调度规则变化来更新自己的

K8S三条网络

kubernetes概述及快速入门

kubernetes概述及快速入门

K8S逻辑架构

kubernetes概述及快速入门


推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 直播带货系统中的推流技术详解
    本文介绍了RTMP(实时消息传输协议)及其在直播带货系统中的应用,并详细探讨了带货直播系统的连麦方案,包括服务端合流和客户端合流的优势与劣势。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 一、Tomcat安装后本身提供了一个server,端口配置默认是8080,对应目录为:..\Tomcat8.0\webapps二、Tomcat8.0配置多个端口,其实也就是给T ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • This feature automatically validates new regions using the AWS SDK, ensuring compatibility and accuracy. ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
author-avatar
哟呼的围脖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有