K8s基础(一)——组件简介

作为K8s学习笔记,介绍相关组件、单机环境搭建,以备后查。

“Kubernetes(K8s)是一个开源项目,用于自动化部署、扩缩容和管理容器化的应用。它将组成应用程序的容器分组为逻辑单元,以便于管理和发现”。简单来说就是容器编排工具,官方文档中介绍说K8s在Google生产环境中有15年的运行经验,并且吸纳了社区中很多好的想法和实践。

概念&组件

  1. K8s既然是容器编排工具,一定少不了最基础的Container

  2. 操作Container最初由Docker来进行的,K8s中有自己的最小操作单位,称为Pod。Pod可以理解为一个或多个Container的组合

  3. Pod的维护交给ReplicaSet去做,通过Selector来进行管理

  4. Pod和ReplicaSet的状态需要维护和监测,于是就有了Deployment

  5. 相同或有关联的Pod需要分类管理——Label

  6. 具有相同Label的服务需要有个名称,即Service

  7. Pod运行在Docker主机中,这个主机就被称为Node

  8. 以上概念作为整体来展示,如下所示:

  9. 集群想要完成工作应该需要一些组件支持,如下所示:

    • kubectl 作为操作集群的客户端,发送交互请求
    • 请求应该先到达Master Node,再分发给Worker node执行创建Pod等操作。请求需要认证授权
    • APIServer Master Node中由它来接收请求
    • Scheduler APIServer需要根据一定的调度策略来分发请求
    • Controller 具体执行请求
    • kube-proxy 在Worker Node接收请求
    • kubelet 创建Pod(Docker创建container)
    • DNS 域名解析
    • ETCD 分布式存储(各节点信息)
    • Dashboard 监控集群状态
    • fluentd 日志收集
  10. 官网提供的架构图

环境搭建

可选方案

  1. 原生方式
  1. 在线实验环境
  1. Cloud上搭建

  2. 企业级解决方案CoreOS

  3. Minikube

  4. Kubeadm

搭建Minikube单节点

Windows
Centos
  1. 安装Docker

  2. 安装Kubectl

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 01 下载
    curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s
    https://storage.googleapis.com/kubernetesrelease/release/stable.txt`/bin/linux/amd64/kubectl

    # 02 授权
    chmod +x ./kubectl

    # 03 添加到环境变量
    sudo mv ./kubectl /usr/local/bin/kubectl

    # 04 检查
    kubectl version
  3. 安装Minikube

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 01 下载安装授权
    curl -Lo minikube
    https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
    && chmod +x minikube

    # 02 添加到环境变量
    sudo mkdir -p /usr/local/bin/
    sudo install minikube /usr/local/bin/

    # 03 检查
    minikube version
  4. 使用Minikube创建单节点K8s

    minikube start --vm-driver=none