k8s-学习总结(Kubernetes基本概念、运行结构、分层结构、安装部署)

官方文档

记录几个常用的

  • 主页(中文):https://kubernetes.io/zh/
  • 文档概览:https://kubernetes.io/zh/docs/home/
  • 标准化词汇表:https://kubernetes.io/zh/docs/reference/glossary/?all=true#term-kubelet
    (查询各种关键词、技术术语的相关解释)
  • k8s中文社区:https://www.kubernetes.org.cn/
  • k8s中文社区的文档:http://docs.kubernetes.org.cn/

相关概念

  • Kubernetes :是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。
  • Kubernetes 名称意义: Kubernetes 源于希腊语,意为 “舵手” 或 “飞行员”。也称为k8s,首字母k和尾字母s之间有8个字母
  • Kubeadm用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。可以使用 kubeadm 安装控制面和工作节点组件
  • Kubectl:是用来和 Kubernetes API 服务器进行通信的命令行工具。可以使用 kubectl 创建、检查、更新和删除 Kubernetes 对象
  • Kubernetes 版本号格式为 x.y.z,其中 x 为大版本号,y 为小版本号,z 为补丁版本号。 版本号格式遵循 Semantic Versioning 规则
  • Kubernetes 优势:
    • 服务发现和负载均衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器,如果到容器的流量很大,Kubernetes 可以负载均衡并分配网络流量,从而使部署稳定。
    • 存储编排:Kubernetes 允许自动挂载您选择的存储系统,例如本地存储、公共云提供商等。
    • 自动部署和回滚:可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化 Kubernetes 来为您的部署创建新容器,删除现有容器并将它们的所有资源用于新容器。
    • 自动二进制打包:Kubernetes 允许您指定每个容器所需 CPU 和内存(RAM)。当容器指定了资源请求时,Kubernetes 可以做出更好的决策来管理容器的资源。
    • 自我修复:Kubernetes 重新启动失败的容器、替换容器、杀死不响应用户定义的运行状况检查的容器,并且在准备好服务之前不将其通告给客户端。
    • 密钥与配置管理:Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。您可以在不重建容器镜像的情况下部署和更新密钥和应用程序配置,也无需在堆栈配置中暴露密钥。

运行结构

  • Kubernetes 组成分类:
    • Master:Master 组件提供集群的控制平台。Master 组件对集群进行全局决策(例如,调度),并检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。Master 组件可以在集群中的任何节点上运行。

      • kube-apiserver:主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端。
      • etcd:是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
      • kube-scheduler:主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
      • kube-controller-manager在主节点上运行控制器的组件。从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。这些控制器包括:
        • 节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。
        • 副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。
        • 端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)。
        • 服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌.
        • 云控制器管理器-(cloud-controller-manager)
      • cloud-controller-manager 运行与基础云提供商交互的控制器。。可以通过在启动 kube-controller-manager 时将 --cloud-provider 参数设置为 external 来禁用云控制器循环监控。主要控制器包括:
        • 节点控制器(Node Controller): 用于检查云提供商以确定节点是否在云中停止响应后被删除
        • 路由控制器(Route Controller): 用于在底层云基础架构中设置路由
        • 服务控制器(Service Controller): 用于创建、更新和删除云提供商负载均衡器
        • 数据卷控制器(Volume Controller): 用于创建、附加和装载卷、并与云提供商进行交互以编排卷
    • Node:节点组件在集群每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境

      • kubelet一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中。kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。

      • kube-proxy:kube-proxy 是集群中每个节点上运行的网络代理,实现 Kubernetes Service 概念的一部分。kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。如果有 kube-proxy 可用,它将使用操作系统数据包过滤层。否则,kube-proxy 会转发流量本身。

      • 容器运行时(Container Runtime):容器运行时是负责运行容器的软件。Kubernetes 支持多个容器运行时: Docker、containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。

    • Addon:插件,扩展了 Kubernetes 的功能;插件分类:

      • 网络和网络策略
        • 有很多,先标记一下后续学习,具体可查看网址解释:https://kubernetes.io/zh/docs/concepts/cluster-administration/addons/
        • Flannel 是一个可以用于 Kubernetes 的 overlay 网络提供者
      • 服务发现
        • CoreDNS 是一种灵活的,可扩展的 DNS 服务器,可以 安装 为集群内的 Pod 提供 DNS 服务
      • 可视化管理
        • Dashboard 是一个 Kubernetes 的 web 控制台界面。
        • Weave Scope 是一个图形化工具,用于查看你的 containers、 pods、services 等。 请和一个 Weave Cloud account 一起使用,或者自己运行 UI。
      • 基础设施
        • KubeVirt 是可以让 Kubernetes 运行虚拟机的 add-ons 。通常运行在裸机群集上
      • 容器资源监控:容器资源监控将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面
        • Resource metrics pipeline
        • Full metrics pipeline
      • 集群层面日志:集群层面日志机制负责将容器的日志数据保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。
        • 基本日志记录:使用 kubectl logs 命令获取基本日志记录内容
        • 节点级日志记录:容器化应用写入 stdout 和 stderr 的任何数据,都会被容器引擎捕获并被重定向到某个位置
        • 集群级日志架构:在节点级日志的基础上,增加具有日志代理功能的 sidecar 容器,作为日志管理后端服务

在这里插入图片描述

分层结构

在这里插入图片描述
Kubernetes设计理念和功能其实就是一个类似Linux的分层架构:
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
Kubernetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等

相关命令

kubeadm

kubeadm
kubeadm [command]
kubeadm alpha 		预览一组可用的新功能以便从社区搜集反馈
kubeadm config 		如果你使用 kubeadm v1.7.x 或者更低版本,你需要对你的集群做一些配置以便使用 kubeadm upgrade 命令
kubeadm help 		帮助信息
kubeadm init      	启动一个 Kubernetes 主节点
kubeadm join     	启动一个 Kubernetes 工作节点并且将其加入到集群
kubeadm reset 		还原之前使用 kubeadm init 或者 kubeadm join 对节点产生的改变
kubeadm token 		使用 kubeadm join 来管理令牌
kubeadm upgrade 	更新一个 Kubernetes 集群到新版本
kubeadm version 	打印出 kubeadm 版本

Kunernetes安装部署

安装环境

主机 系统 IP 作用
node1 rhel7.5 192.168.27.11 安装有Docker(18.09.6)、可访问私有仓库、作为部署的master节点
node2 rhel7.5 192.168.27.12 安装有Docker(18.09.6)、可访问私有仓库、node节点
node3 rhel7.5 192.168.27.13 安装有Docker(18.09.6)、可访问私有仓库、node节点
repository rhel7.5 192.168.27.12 搭建有harbor私有仓库,作为集群操作中的镜像使用仓库

安装docker环境,是为了k8s在作为容器运行时使用

安装过程

  1. 修改所有节点daemon.json文件;因为docekr默认运行的cgroup驱动是cgroupfs,k8s使用的是systemd,会发生驱动不一致报错,为防止报错,改为统一口径,本次讲docekr驱动改为systemd,根据官方文档修改
    官网文档:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/
[root@node1 docker]# vim /etc/docker/daemon.json
{
   
  "registry-mirrors": ["https://reg.mydocker.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],          #此处为重点,必须填写内容,其他可以根据需要增加
  "log-driver": "json-file",
  "log-opts": {
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值