K8S知识点二刷

一、K8S图概

在这里插入图片描述

二、K8S文字介绍

K8S

docker:容器本质上讲就是运行在操作系统上的一个进程,只不过加入了对资源的隔离和限制

namespace隔离:unix 的unshare方法进行隔离

cgroups资源配置:CPU,内存,网络限制

docker镜像:解决运行容器快速启动,复制,迁移。同时采用OTA方式建立镜像仓库,节约空间。

组件

Master

  • apiserver
  • etcd
  • scheduler
  • Manager-controller
  • cloud-manager

Worker

  • kubelet
  • kube-proxy

安装

安装注意事项

  • 虚拟机硬件条件:kubeadm init要求最低 2核
  • docker推荐:kubeadm init推荐docker使用systemd作为cgroup驱动

Master

  • docker
  • kubectl
  • kubeadm

Worker

  • docker
  • kubectl
  • kubelet
  • kubeadm(kubeadm join 10.206.0.3:6443 --token执行的时候)

常用对象

基础

  • K8s最小的调度单元:Pod

    • Pod健康状态监控:由kubelet对容器定期诊断

      • 检测容器健康状态

        • StartupProbe探针:检查容器内应用程序是否已经启动,如果设置该属性,则会禁止其他探针,直到它成功。

          • 启动检查
        • LivenessProbe探针:检查容器是否处于运行状态

          • 存活检查
        • ReadinessProbe探针:检查容器是否处于可接受请求服务的状态

          • 就绪检查
      • 处理器

        • ExecAction:在容器中执行命令。命令退出状态为0则表示成功。
        • TCPSocketAction:容器IP地址的特定端口上执行一个TCP检查,如果端口处于打开,则成功。
        • HTTPGetAction:容器IP地址特定端口和路径执行GET请求,若返回200~400,则成功

网络实现

  • 问题

    • 集群内

      • Container与Container之间通信问题
      • Pod与Pod之间通信问题
      • Pod与服务之间通信问题
    • 集群外

      • 外部应用于服务通信问题
  • 解决方案

    • 集群内Pod的通信方式

      • 环境变量

        • kubelet为service创建一组环境变量
        • service先于pod创建,否则环境变量不生效
        • 相互依赖的环境变量有先后顺序,不会读取到前面为复制的变量
      • DNS

        • 为每一个service创建一个DNS

          • 普通服务DNS:

            • my-svc.my-namespace.svc.cluster-domain.example
          • Deployment、DaemonSet DNS:

            • pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example
          • Pod设置DNS:

            • hostname默认取metadata.name,若需要自定义则通过spec.hostname指定值
            • spc.subdomain可以指定子域名值
    • 集群外访问Service的通信方式

      • ClusterIP:默认,内部IP,只能在集群内部访问服务;特别的,当Cluster=None的时,为Headless服务

      • NodePort:对节点暴露服务,意味着可以通过任意NodePort上访问这个服务

      • LoadBlance:是发布服务到互联网的标椎方式

      • Ingress:集群中服务的外部访问进行管理的API对象。

        • Ingress资源仅支持用于转发HTTP流量的规则

控制器

  • 副本控制器:ReplicaSet

  • Deployement

    • 无状态应用;RC+版本管理
  • StatefulSets

    • 有状态应用
  • DaemonSet

    • 每个节点上只能跑一个Pod

      • 网络Daemon

      • 存储Daemon

        • ceph,glusterd
      • 日志收集Daemon

        • flunentd,logstash
      • 监控Daemon

        • Prometheus Node Export或者collectd
  • Job(CroJob 1.8版本之后废除)

数据持久化

  • volume

    • emptyDir:Pod指定节点,并创建emptyDir卷;Pod销毁,卷消失
    • hostPath:节点中的文件挂在到Pod上
    • nfs服务:网络文件存储系统
    • glusterfs
    • cepthfs
    • ceph
  • PV/PVC

    • PVC:用户申请
    • PV:存储卷,管理者创建
    • SC(Storage Class):动态创建PV
  • PV+PVC+NFS做持久化

配置分离

  • ConfigMap
  • Secret

插件

网络

  • 解决Pod之间通信问题,CNI插件

    • flannel:简单
    • calico:复杂

存储

  • rook+ceph:分布式存储

    • rook:存储编排器
    • ceph:分布式文件存储系统

微服务监控三大类

  • Logging:用户主动记录的离散事件,记录的信息一般是非结构化的文本内容,在用户进行问题分析判断时可以提供更为详尽的线索

    • logstash:收集日志
    • ELK elasticsearch:存储日志
    • kibana:数据展示
  • Metrics:具有聚合属性的采集数据,旨在为用户展示某个指标在某个时段的运行状态,用于查看一些指标和趋势。

    • node export:收集node数据工具
    • prometheus:数据库+数据抓取工具
    • Grafana:图形化工具
  • Tracing:记录一次请求调用的生命周期全过程,其中包括服务调用和处理时长等信息,含有请求上下文环境,由一个全局唯一的 Trace ID 来进行标识和串联整个调用链路,非常适合微服务架构的监控场景。

    • Skywalking,ping-point,zipkin

私有镜像库搭建

  • JFrog Container Registry(JCR)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值