系统入门与实际应用全内容详解
树图思维导图提供 k8s入门到微服务项目实战 在线思维导图免费制作,点击“编辑”按钮,可对 k8s入门到微服务项目实战 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2913dc20c0f4ad39154eed5670e04be4
k8s 入门到微服务项目实战思维导图模板大纲
背景介绍
市场需求
技术竞争力
行业发展方向
讲师简介
姓名:刘刚
工作年限:7年
工作经历:
叩丁狼高级讲师
曾任技术部门负责人
深圳知名物联网公司 Team Leader
熟悉技术领域:微服务、物联网、云原生等
授课风格:持续高能技术点输出、
课程解读
面向人群
运维工程师
Java 开发
架构师
技术经理
前置学习
必须
Linux 基础命令
Docker
可选
Java 微服务开发
Redis
Elasticsearch
Prometheus
Jenkins
模块解读
课程目标
深入理解 k8s 各大资源对象以及最佳实践
熟练运用 k8s 各项调度策略
掌握 k8s 网络原理及应用
熟练掌握 pod 控制器及运用场景
熟练掌握 k8s 微服务 DevOps 实战
认识 Kubernetes
什么是 Kubernetes?
为什么需要 Kubernetes?
应用部署的三大阶段
传统部署
虚拟化部署
容器化部署
k8s 的特点
自我修复
弹性伸缩
自动部署和回滚
服务发现和负载均衡
机密和配置管理
存储编排
批处理
企业级容器调度平台
Apache Mesos
基本概念
优势
Docker Swarm
基本概念
优势
Google Kubernetes
基本概念
优势
集群架构与组件
相关组件
控制面板组件(Master)
kube-apiserver
kube-controller-manager
cloud-controller-manager
kube-scheduler
etcd
节点组件
kubelet
kube-proxy
container runtime
附加组件
kube-dns
Ingress Controller
Prometheus
Dashboard
Federation
Fluentd-elasticsearch
分层架构
生态系统
接口层
管理层
应用层
核心层
核心概念与专业术语
服务的分类
无状态
代表应用
Nginx
Apache
优点:对客户端透明,无依赖关系,可以高效实现扩容、迁移
缺点:不能存储数据,需要额外的数据服务支撑
有状态
代表应用
MySQL
Redis
优点:可以独立存储数据,实现数据管理
缺点:集群环境下需要实现主从、数据同步、备份、水平扩容复杂
资源和对象
资源的分类
元数据型
Horizontal Pod Autoscaler(HPA)
PodTemplate
LimitRange
集群级
Namespace
Node
ClusterRole
ClusterRoleBinding
命名空间级
工作负载型
Pod
副本(replicas)
控制器
适用无状态服务
ReplicationController(RC)
ReplicaSet(RS)
Label 和 Selector
Deployment
创建 Replica Set / Pod
滚动升级/回滚
平滑扩容和缩容
暂停与恢复 Deployment
适用有状态服务
StatefulSet
主要特点
稳定的持久化存储
稳定的网络标志
有序部署,有序扩展
有序收缩,有序删除
组成
Headless Service
volumeClaimTemplate
注意事项
kubernetes v1.5 版本以上才支持
所有Pod的Volume必须使用PersistentVolume或者是管理员事先创建好
为了保证数据安全,删除StatefulSet时不会删除Volume
StatefulSet 需要一个 Headless Service 来定义 DNS domain,需要在 StatefulSet 之前创建好
守护进程
DaemonSet
任务/定时任务
Job
CronJob
服务发现
Service
Ingress
存储
Volume
CSI
特殊类型配置
ConfigMap
Secret
DownwardAPI
其他
Role
RoleBinding
资源清单
对象规约和状态
规约(Spec)
状态(Status)
微服务项目 k8s 环境演示
搭建 Kubernetes 集群
搭建方案
minikube
kubeadm
服务器要求
3 台服务器(虚拟机)
k8s-master:192.168.113.120
k8s-node1:192.168.113.121
k8s-node2:192.168.113.122
最低配置:2核、2G内存、20G硬盘
最好能联网,不能联网的话需要有提供对应镜像的私有仓库
软件环境
操作系统:CentOS 7
Docker:20+
k8s:1.23.6
安装步骤
1. 初始操作
2. 安装基础软件(所有节点)
2.1 安装 Docker
2.2 添加阿里云 yum 源
2.3 安装 kubeadm、kubelet、kubectl
3. 部署 Kubernetes Master
4. 加入 Kubernetes Node
5. 部署 CNI 网络插件
7. 测试 kubernetes 集群
二进制安装
命令行工具
命令行工具 kubectl
在任意节点使用 kubectl
资源操作
创建对象
显示和查找资源
更新资源
修补资源
编辑资源
scale 资源
删除资源
Pod 与集群
与运行的 Pod 交互
与节点和集群交互
资源类型与别名
pods
po
deployments
deploy
services
svc
namespace
ns
nodes
no
格式化输出
输出 json 格式
-o json
仅打印资源名称
-o name
以纯文本格式输出所有信息
-o wide
输出 yaml 格式
-o yaml
API 概述
类型
Alpha
Beta
Stable
访问控制
认证
授权
废弃 api 说明
深入 pod
Pod 配置文件
探针
类型
StartupProbe
LivenessProbe
ReadinessProbe
探测方式
ExecAction
TCPSocketAction
HTTPGetAction
参数配置
生命周期
Pod 退出流程
删除操作
Endpoint 删除 pod 的 ip 地址
Pod 变成 Terminating 状态
执行 preStop 的指令
PreStop 的应用
注册中心下线
数据清理
数据销毁
资源调度
Label 和 Selector
标签(Label)
配置文件
kubectl
临时创建 label
修改已经存在的标签
查看 label
选择器(Selector)
配置文件
kubectl
Deployment
功能
创建
滚动更新
多个滚动更新并行
回滚
扩容缩容
暂停与恢复
配置文件
StatefulSet
功能
创建
扩容缩容
镜像更新
RollingUpdate
灰度发布
OnDelete
删除
删除 pvc
配置文件
DaemonSet
配置文件
指定 Node 节点
nodeSelector
nodeAffinity
podAffinity
滚动更新
HPA 自动扩/缩容
开启指标服务
cpu、内存指标监控
自定义 metrics
服务发布
Service
Service 的定义
命令操作
Endpoint
代理 k8s 外部服务
各环境访问名称统一
访问 k8s 集群外的其他服务
项目迁移
反向代理外部域名
常用类型
ClusterIP
ExternalName
NodePort
LoadBalancer
Ingress
安装 ingress-nginx
添加 helm 仓库
下载包
配置参数
创建 Namespace
安装 ingress
基本使用
创建一个 ingress
多域名配置
配置与存储
配置管理
ConfigMap
创建
使用 ConfigMap
加密数据配置 Secret
SubPath 的使用
配置的热更新
通过 edit 命令直接修改 configmap
通过 replace 替换
不可变的 Secret 和 ConfigMap
持久化存储
Volumes
HostPath
配置文件
EmptyDir
配置文件
NFS 挂载
安装 nfs
配置文件
PV 与 PVC
生命周期
构建
静态构建
动态构建
绑定
使用
回收策略
保留(Retain)
删除(Delete)
回收(Recycle)
PV
状态
Available:空闲,未被绑定
Bound:已经被 PVC 绑定
Released:PVC 被删除,资源已回收,但是 PV 未被重新使用
Failed:自动回收失败
配置文件
PVC
Pod 绑定 PVC
配置文件
StorageClass
制备器(Provisioner)
NFS 动态制备案例
nfs-provisioner
StorageClass 配置
RBAC 配置
PVC 处于 Pending 状态
配置 SelfLink
不需要 SelfLink 的 provisioner
PVC 测试配置
高级调度
CronJob 计划任务
cron 表达式
配置文件
初始化容器 InitContainer
污点和容忍
污点(Taint)
NoSchedule
NoExecute
容忍(Toleration)
Equal
Exists
亲和力(Affinity)
NodeAffinity
RequiredDuringSchedulingIgnoredDuringExecution
PreferredDuringSchedulingIgnoredDuringExecution
应用
匹配类型
In
NotIn
Exists
DoesNotExist
Gt
Lt
配置模板
PodAffinity
RequiredDuringSchedulingIgnoredDuringExecution
PreferredDuringSchedulingIgnoredDuringExecution
配置模板
PodAntiAffinity
RequiredDuringSchedulingIgnoredDuringExecution
PreferredDuringSchedulingIgnoredDuringExecution
身份认证与权限
认证
User Accounts
Service Accounts
Service Account 自动化
Service Account Admission Controller
Token Controller
Service Account Controller
授权(RBAC)
Role
配置文件
ClusterRole
RoleBinding
配置文件
ClusterRoleBinding
Helm 包管理器
什么是 Helm?
Helm 架构
重要概念
chart
config
release
组件
Helm 客户端
Helm 库
安装 Helm
下载二进制文件
解压(tar -zxvf helm-v3.10.2-linux-amd64.tar.gz)
将解压目录下的 helm 程序移动到 usr/local/bin/helm
添加阿里云 helm 仓库
Helm 的常用命令
helm repo
列出、增加、更新、删除 chart 仓库
helm search
使用关键词搜索 chart
helm pull
拉取远程仓库中的 chart 到本地
helm create
在本地创建新的 chart
helm dependency
管理 chart 依赖
helm install
安装 chart
helm list
列出所有 release
helm lint
检查 chart 配置是否有误
helm package
打包本地 chart
helm rollback
回滚 release 到历史版本
helm uninstall
卸载 release
helm upgrade
升级 release
chart 详解
目录结构
Redis chart 实践
修改 helm 源
搜索 redis chart
修改配置安装
查看安装情况
升级与回滚
helm 卸载 redis
k8s 集群监控
监控方案
Heapster
Weave Scope
Prometheus
Prometheus 监控 k8s
自定义配置
创建 ConfigMap 配置
部署 Prometheus
配置访问权限
服务发现配置
系统时间同步
监控 k8s 集群
从 kubelet 获取节点容器资源使用情况
Exporter 监控资源使用情况
对 Ingress 和 Service 进行网络探测
Grafana 可视化
基本概念
数据源(Data Source)
仪表盘(Dashboard)
组织和用户
集成 Grafana
部署 Grafana
服务发现
配置 Grafana 面板
kube-prometheus
替换国内镜像
修改访问入口
安装
配置 Ingress
卸载
ELK 日志管理
ELK 组成
Elasticsearch
Filebeat
Logstash
Kibana
集成 ELK
部署 es 搜索服务
部署 logstash 数据清洗
部署 filebeat 数据采集
部署 kibana 可视化界面
Kibana 配置
Kubernetes 可视化界面
Kubernetes Dashboard
安装
配置所有权限账号
Dashboard 的使用
kubesphere
本地存储动态 PVC
安装
启用可插拔组件
Rancher
Kuboard
DevOps 环境搭建
Gitlab
安装 Gitlab
页面配置
配置 Secret
为项目配置 Webhook
卸载
Harbor
安装 Harbor
配置 Secret
SonarQube
安装 SonarQube
生成服务 token
创建 Webhook 服务
创建项目
Jenkins
构建带 maven 环境的 jenkins 镜像
安装 Jenkins
安装插件
Build Authorization Token Root
Gitlab
SonarQube Scanner
Node and Label parameter
Kubernetes
Config File Provider
Git Parameter
创建 gitlab 访问凭证
案例:SpringBoot 项目 CICD
配置节点标签
创建流水线项目
Webhook 构建触发器
Pipeline 脚本配置
检查/创建相关凭证
Harbor 镜像仓库凭证
Gitlab 访问凭证
kubeconfig 文件 id
SonarQube 凭证
添加 SonarQube Webhook
项目构建
微服务 DevOps 实战
项目构建
项目环境
MySQL
Nacos
Redis
MongoDB
Elasticsearch
RocketMQ
服务
API 网关
用户服务
商品服务
秒杀服务
前端服务
Jenkins CICD
创建流水线项目
Extended Choice Parameter
Kubesphere DevOps
开启 DevOps
集成 SonarQube
更新 settings.xml
部署项目
Spring Boot 项目
项目
ks-cicd-demo
配置文件
harbor-secret
微服务项目
项目
ks-shop-dev
ks-shop-flashsale
配置文件
harbor-secret
DevOps 项目
Spring Boot 项目
流水线
cicd-demo
配置
gitlab-user-pass
harbor-user-pass
kubeconfig-id
构建参数
分支
版本号
微服务项目
流水线
flashsale-cicd
配置
gitlab-user-pass
harbor-user-pass
kubeconfig-id
构建参数
服务
frontend-server
shop-parent/api-gateway
shop-parent/shop-uaa
shop-parent/shop-provider/flashsale-server
shop-parent/shop-provider/product-server
命名空间
snapshots
releases
副本数
1
3
5
7
版本号
分支