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
1499



被折叠的 条评论
为什么被折叠?



