1 搭建kubernetes集群
1.1 搭建方案
1.1.1 minikube
1.1.2 kubeadm
软件环境
操作系统:centos7
Docker: 20+
k8s: 1.23.6
安装步骤
-
初始操作
-
安装基础软件(所有节点)
安装docker
添加阿里云yum源
安装kubeadm、kubelet、kubectl
-
部署kubernets Master
1.1.3 二进制安装
1.1.4 命令行工具
1.2 命令行工具kubectl
1.2.1 在任意节点使用kubectl
1.2.2 自动补全
1.2.3 资源操作
2 pod
pod配置文件
探针
类型
LivenessProbe
ReadinessProbe
StartupProbe
探测方式
ExecAction
TCPSocketAction
HTTPGetAction
参数配置
案例
生命周期
pod删除,pod变成terminating状态,执行preStop指令
preStop应用:数据清理,数据销毁等
3. 资源调度
Label和Selector
临时增加label
修改标签
显示标签
Selector
Deployment
功能:
- 滚动更新
- 回滚
- 扩容缩容
- 暂停与恢复
滚动更新
回滚
扩容缩容
暂停与恢复
StatefulSet
特点:
- 稳定的持久化存储
- 稳定的网络标志
- 有序部署,有序扩展
- 有序收缩,有序删除
组成:
- Headless Service
- VolumeClaimTemplate
扩容缩容
更新
RollingUpdate
OnDelete
当pod删除的时候,才去更新
删除
DaemonSet
指定node节点
HPA 自动扩容/缩容
开启指标服务
cpu、内存指标监控
自定义metrics
4. 服务发现
Service
代理k8s外部服务
实现service访问外部服务
service
endpoint
反向代理外部域名
类型
-
ClusterIP
-
ExternalName
-
NodePort
-
LoadBalancer
Ingress
安装ingress-nginx(ingress控制器)
添加helm仓库
下载包
配置参数
创建Namespace
安装ingress
ingress使用
5. 配置与存储
配置管理
ConfigMap
将configmap中的内容添加到环境变量中
将configmap中文件,映射到容器内部
Secret
subpath使用
配置的热更新
通过replace替换配置文件
不可变的configmap和secret
持久化存储
volumes
HostPath
EmptyDir
NFS挂载
安装nfs
pv与pvc
生命周期
-
构建
-
静态构建
-
动态构建
-
-
绑定
-
使用
-
回收策略
-
保留(Retain)
-
删除(Delete)
-
回收(Recycle)
-
pv
状态
- available :空闲,没有被绑定
- bound : 已经被pvc绑定
- released : pvc被删除,资源已回收,但是pv未被重新使用
- failed : 自动回收失败
配置文件:
pvc
配置文件
pod绑定pvc
StorageClass
制备器(provisioner)
NFS动态制备案例
-
创建StorateClass,并使用自己创建的provisioner
-
创建provisioner
-
创建sservice以及pod
6 高级调度
CronJob计划任务
配置文件
cron表达式
初始化容器(InitContainer)
污点和容忍
污点(Taint)
容忍(Toleration)
亲和力(Affinity)
RequiredDuringSchedulinglgnoredDuringExecution
PreferredDuringSchedulinglgnoredDuringExecution
NodeAffinity
PodAffinity
PodAntiAffinity
7 身份与权限认证
认证
授权
-
role
-
clusterRole
-
roleBinding
-
clusterRoleBinding