k8s(kubernetes)一:基础

K8s是一款由Google开发的容器编排工具,具备可移植性、可扩展性和自动化等特点。支持容器的自动部署、重启及复制,并能实现应用的灰度更新与回滚。K8s通过Pod进行容器资源的封装与管理,利用Service实现服务发现与负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:简介

  • 背景:由google开发,基于borg系统

  • borg:google内部的一个大规模的集群管理系统,构建于容器技术之上,主要目的是为了实现资源管理的自动化,以及跨节点的资源复用率的最大化。

  • 什么是k8s:简单说来,k8s就是一款容器编排工具

  • 为什么要用k8s

    • 可移植:支持公有云、私有云...

    • 可扩展:模块化,插件化,可挂载,可组合

    • 自动化:自动部署,自动重启,自动复制,自动伸缩

  • k8s特性

    • 自动装箱:构建于容器之上,基于资源依赖以及其它约束自动完成容器的部署,而且不会影响可用性

    • 自我修复:支持容器故障后自动重启、节点故障后重新调度,以及其它可用节点,健康状态检查等自我修复机制

    • 水平扩展:支持通过简单命令或UI进行水平扩展,以及基于CPU等资源负载率的自动水平扩展机制

    • 服务发现与负载均衡:k8s通过KubeDNS为系统内置服务发现功能,Service可以通过iptables或者ipvs内建负载均衡机制

    • 自动发布和回滚:k8s支持“灰度”更新应用程序以及配置信息。监控更新过程中应用程序的健康状况,如果产生故障, 立即执行回滚操作

    • 密钥和配置管理:k8s包含了一个叫做ConfigMap的组件,该组件实现了数据与docker镜像的解耦,在需要的时候,只需对配置做出变更,不需要重新构建docker镜像。

    • 存储编排:k8s支持pod对象按照需求自动挂载不同类型的存储系统,包括本地存储,云服务端,网络存储等

    • 批处理:k8s支持CI(可持续集成)

  • k8s基本概念

    • 说明:k8s使用共享网络将多个物理机或者虚拟机汇集到一个集群中,在服务器之间进行通信

    • 集群中的节点分为master和worker

    • 集群中的主机,既可以是物理机,也可以虚拟机

  • master:

    • 概念:集群中的网关和中枢

    • 任务

      • 为用户和客户端暴露API

      • 跟踪其它服务器的健康状态

      • 调度任务,进行负载均衡

      • 编排其它组件之间的通信

  • node

    • 概念:k8s集群中的工作节点

    • 任务:接收worker的工作指令,概念指令进行相应的操作

  • 资源抽象

    • pod:k8s最小调度单元,一般情况下,k8s不会直接运行容器,而是使用一个抽象的资源来封装一个或者多个容器,这个抽象就是pod.同一个pod中的容器,共享网络,共享存储,可以通过本地回环网络lo直接通信,但他们彼此又在Mount, User, PID等空间保持隔离

    • label:将资源进行分类的标识符,label在创建之后,可以任意添加和修改,一个对象可以拥有多个label.一个label也可以附加于多个对象。

    • 标签选择器(label selector):一种根据label进行过滤,筛选符合条件的资源对象的机制。

    • pod控制器:用于自动管理Pod对象

    • 服务资源(service):service表示建立在一组pod对象之上的资源抽象,它主要是通过标签选择器选定一组对象,为这一组对象定义一个统一的固定访问入口,一般是IP地址。在大多数时候,请求到达service IP之后,通过相应的负载均衡分配到service中的各个端点(各个pod对象之上)

    • 存储卷:与docker volume类似

    • Name:表示k8s集群中资源对象的标识符

    • Namespace:name的作用域,namespace通常用于实现项目的资源隔离,形成逻辑分组

    • Annotation:记录辅助信息

      • 构建、发布的镜像信息

        • 时间戳

        • 发行ID

        • 编号

        • 镜像仓库地址

      • 一些日志记录,监视,分析

      • 用户或者系统来源

    • Ingress:k8s将pod对象和外部网络环境进行隔离,pod和service等对象间的通信,使用内部专用地址,如果需要开放某些pod对象提供给外部用户访问,则需要为请求流量打开一个通往k8s集群内部的通道,ingress也是这类通道的实现方式之一。

二. k8s网络模型

  • 整体网络模型架构如下:

  • k8s的网络中主要存在4种不同类型的通信

    • 同一pod内的容器之间的通信

    • pos之间的通信

    • pod与service之间的通信

    • 集群外部的流量与service之间的通信

  • k8s网络模型实现机制的特点

    • 所有pod之间均可以不经过NAT机制而直接通信

    • 所有节点均可以不经过NAT机制而直接与容器通信

    • 容器自己使用的IP地址也就是其它容器或者节点直接看到的IP地址

3. k8s基本操作

下载地址:https://github.com/kubernetes/kubernetes

1:go环境下的安装

go get -d k8s.io/kubernetes
cd $GOPATH/src/k8s.io/kubernetes
make

 2:docker环境下的安装

git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make quick-release

3:release直接安装

地址:https://github.com/kubernetes/kubernetes/releases

 .tar.gz中包含k8s的文档,服务程序文件,示例

https://kubernetes.io/zh/docs/home/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值