• Kubernetes-01-基础概念篇 基础组件&搭建一个K8S集群


    K8S重要技术内容主要涵盖:集群架构、容器化应用部署、ScaleUp/Down、滚动更新、监控检查、集群网络、数据管理、监控与日志

    一、基础名词

    1.Cluster

    Cluster是计算、存储、网络资源的集合,利用资源运行各种基于容器的应用

    2.Master

    Master是Cluster的核心,负责调度、控制。
    高可用版本,一般至少两个Master

    3.Node

    Node负责运行容器应用
    由Master管理,Node负责监控和汇报容器状态
    根据Master的要求管理容器的生命周期

    4.Pod

    Pod是K8S最小的工作单元,一个Pod会包含一个或多个容器Container
    Pod中的1个或多个容器会被Master调度到一个Node上面运行

    Pod的特点
    1)可管理性
    K8S中,Pod以最小的单元进行调度、扩展、共享资源、管理生命周期

    2)通信和资源共享
    同一个Pod中的容器,网络共享(拥有相同的IP和Port)、网络互通(等同于本地访问)、存储共享(等同于本地访问)

    Pod的两种使用方式
    1)运行单一容器
    one container per pod 模式,是K8S最常见的模式,k8s通过管理Pod来管理容器

    2)运行多个容器
    联系十分紧密的两个容器,可以编排于同一个Pod中,他们资源和通信共享,两个容器的服务一起启动、一起停止

    5.Controller 运行容器

    K8S通过Controller管理Pod,Controller中定义Pod的部署特性

    1)Deployment
    最为常见的Pod的部署方式,可以管理多Pod副本

    2)ReplicaSet
    实现Pod的多副本管理,通常使用Deployment创建Pod的时候会自动创建ReplicaSet,通过ReplicaSet来管理Pod,通常不直接创建ReplicaSet

    3)DaemonSet
    用在一个Node只运行一个Pod副本的情况,守护进程

    4)StatefulSet
    能够保证Pod的每个副本在整个生命周期中的名称是不变的,不因重启而变化,其他Controller不具备这样的特点

    5)Job
    用于运行结束就删除的应用,其他Controller会长期运行

    6.Service 访问容器

    Pod间通过IP通信,但是Pod的重启都会导致IP变化,为了能够正常通信,就要依靠Service

    Service定义了一组外部访问Pod的方式,Service有自己的Ip和端口,为Pod提供负载均衡

    7.Namespace

    Namespace可以将一个物理Cluster划分为多个虚拟Cluster,资源完全隔离

    K8S默认的Namespace为

    • kube-system 存放默认系统所需资源
    • default 默认创建资源被分配的空间

    二、如何搭建一个K8S集群

    1.所有节点安装Docker环境

    2.安装 kubelet kubeadm kubectl

    在Cluster节点上,安装kubelet,负责启动Pod和容器

    在Cluster节点上,安装Kubeadm,负责初始化Cluster

    在所有节点上,安装kubectl,负责部署和管理应用,查看各种资源,创建、删除、更新组件

    3.kubeadm 初始化Cluster

    1) 初始化Master

    kubeadm init --apiserver-adverties-address= --pod-network-cidr=

    1. kubeadm 执行初始化前检查
    2. 生成token和证书
    3. 生成kubeConfig配置文件,kubelet使用这个文件和Master通信
    4. 安装Master组件,下载Docker镜像
    5. 安装kube-proxy和kube-dns组件
    6. 安装kubectl
    7. 安装Pod网络环境,尝试使用Flannel作为基础网络架构
    8. 向Cluster注册节点,单独Master和Node节点,将Node注册到Master
      kubectl join --token ip:port
      token可以通过 kubeadm token list 进行查看
      kubectl get nodes 确认 Node节点加入成功

    2)查看Pod具体状态

    kubectl get pod --all-namespaces

    Pod状态:

    • Pending 未就绪
    • ContainerCreating 未就绪
    • ImagePullBackOff 未就绪
    • Running 就绪

    3)查看Pod启动具体日志

    kubectl describe pod [podname]

  • 相关阅读:
    《动手学深度学习》(一)-- 线性神经网络
    smutil数据加密
    判断一个日期是这一年的第几天
    calibre和cpolar搭建一个私有的网络书库
    IDEA2021.1默认设置打开方式(JDK版本和Maven版本)
    基于Springboot外卖系统20:前端菜品展示+菜品数量查询
    好市多(Costco)验厂要求合集
    二茂铁Ferrocene/β-环糊精Cyclodextrin/叶酸FA修饰ZnTe量子点
    IT运维大咖带你玩转企业信息运维自动化
    广域确定性网络技术概述
  • 原文地址:https://blog.csdn.net/c_zyer/article/details/132815615