K8S知识图谱
2023-06-06 14:14:59 0 举报
AI智能生成
k8s知识图谱
作者其他创作
大纲/内容
K8S介绍
概念
k8s本质是一组服务器集群, 它可以在集群的节点上运行特定的程序, 来对节点中的容器进行管理
功能
自我修复
弹性伸缩
服务发现
负载均衡
版本回退
存储编排
主要概念
Node节点
kubelet
负责维护容器的生命周期
即创建,更新,销毁容器
即创建,更新,销毁容器
kube-proxy
负责提供集群内部的服务发现和负载均衡
容器
提供具体的容器的操作
master节点
kube-apiServer
APi操作的唯一入口,接受用户输入的命令,提供认证,授权,发现等机制
kube-scheduler
资源调度
kube-controller-manager
负责维护集群状态, 程序部署,故障检测,自动扩展
etcd
存储集群种各种资源对象的信息
容器
一般一个容器只做一件事情
POD
k8s进行调度的最小单元
一个pod可以运行多个容器
那些必须要一起运行,且必须要一切扩缩容的容器才会放在同一个pod中
pod使用的是虚拟IP
POD控制器
管理POD
确保pod始终处于预期的状态
Namespace
命名空间,用来隔离不同的pod
不同命名空间下的pod无法通信
label
标签,为相同命名空间下的资源进行分组
一个资源可以有多个label
Selector
标签选择
name=value1
name!=value2
name in (value1,value2)
name not in (value3,value4)
可以使用多个selector , 用逗号分隔
Service
通过label选择一组pod对外提供服务
主要是解决pod动态在创建后IP动态变化的问题
提供负载均衡功能
Ingress
提供反向代理功能
是k8s对反向代理功能的抽象, 底层一来nginx等具体的实现
Volume
通过持久化存储的功能
dashboard
可视化面板
权限控制
kubectl
用户集群管理的命令行工具
资源管理方式
命令式对象管理
直接用命令去操作资源
kubectl command type name falgs
command
get
create
delete
type
POD
deployment
service
name
资源的名称
flags
其他参数
命令式对象配置
通过命令和配置文件去操作资源
kubectl command -f filename.yaml
createa/ edit/ get/ patch/ delete/expalin
声明式对象配置
通过apply命令和配置文件去操作资源
仅仅用于新增和更新
重复运行同一个文件会进行更新
使用命令式对象配置的create重复执行,不会更新
使用命令式对象配置的create重复执行,不会更新
使用场景
创建和更新用apply
删除用命令式对象配置
查询资源用 命令式对象管理
常用命令
namespace
kubectl get ns 名字
kubectl describe ns 名字
kubectl delete ns 名字
pod
kubectl get pod -n 命名空间
没有提供单独的运行pod的命令,都是通过pod控制器来实现的
kubectl run 名字 --image=xxxx --port=80 --namespace=dev
kubectl get pod -n 命名空间 -o wide
查看详细信息
kubectl describe pod 名字 -n 命名空间
kubectl delete pod 名字
删除后, pod控制器会新生成一个pod
pod 控制器
deloyment
kubectl run 名称 -n namespace --image=xxx --port=90 --replicas=3
kubectl get deplyment -n dev
kubectl describe deploy 名字 -n dev
kubectl delete deploy 名字 -n dev
修改副本数量 kubectl scale deploy 名字 --repilicas=6 -n dev
replicaSet
修改副本数 kubectl scale rs name --replicas=4 -n dev
修改镜像: kubectl set image rs name --images-xxx -n dev
service
kubectl expose deploy deploy名字 --name=service名字 --type=ClusterIP --port=80 --target-port=80 -n dev
ClusterIP
NodePort
label
得先有资源才能打标签
kubectl label 资源类型 资源名称 key=value -n 命名空间
展示标签
kubectl get 资源 -n namespae --show-labels
更新标签
kubectl label 资源类型 资源名称 -n namespace key=value --overwrite
筛选标签
kubectl get 资源 -l "key=value" -n namespace
删除标签
kubectl label 资源类型 资源名称 -n namepace key-
其他
kubectl explain pod
kubectl explain pod.spec
进入容器
kubectl exec pod名字 -n dev -it -c 容器名字 /bin/sh
容器
DockerFile
POD
结构
应用容器
根容器
pod状态
设置pod ip
状态和生命周期
状态
pending
pod创建了, 还在调度中
running
pod中所有容器都创建完成了
succeeded
pod中所有容器都被成功完成了
failed
至少一个容器出错了
unknown
网络问题
生命周期
POD的创建
运行初始化容器
可以有多个
主容器运行前需要运行的, 做一些准备工作
必须是串行的, 且必须要成功才能启动主容器
运行主容器
容器启动后钩子函数
容器终止前钩子函数
容器存活性探测
容器就绪性探测
配置spec
containers
name
iamge
imagePullPolicy
Always
IfNotPresent
Never
command
指定容器启动时需要执行的命令
如果没有指定则使用打包时的命令
args
env
环境变量
ports
容器需要暴露的端口号
name
端口名字,唯一
containerPort
容器需要监听的端口
hostPort
对应的主机端口
一般不设置, 如果有那么一个节点只能有一个副本
hostIp
一般省略
protocol
协议
resources
最大资源limis
cpu
memory
最小资源requests
子主题
子主题
探针
存活性探针
livenessProbe
有问题会重启容器
就绪性探针
readinessProbe
不会转发流量
方式
exex 命令
TCP port
Http Get
钩子函数(lifecycle)
postStart
preStop
initContainers
类似于containers
restartPolicy
Always
OnFailure
Never
调度策略
定向调度
NodeName
NodeSelector
亲和性调度
nodeAffinity
requireDuringSchedulingIgnoredDuringException
必须要满足条件的node
preferredDuringSchedulingIgnoredDurringException
优先调度到满足的node
podAffinity
podAntiAfinity
POD控制器
类型
ReplicaSet
保证pod数量, 并支持pod数量变更, 镜像变更
Deployment
通过ReplicaSet 来控制Pod, 并支持滚动升级, 版本回退
HPA
可以根据集群负载自动调整pod数量
DaemonSet
job
一次性任务
CronJob
定时任务
ReplicaSet
Selector
matchLabels
matchExpressions
用来管理哪些pod
replicas
副本数量
deployment
replicas
副本
revisionHistoryLimit
历史副本数量
pause
暂停部署
progressDeadlineSeconds
部署超时时间
strategy
type
策略类型
RollingUpdate
滚动更新
ReCreate
先杀死老版本
rollingUpdate
maxUnavailable
最大不可用pod数量
maxSurge
最大额外可以存在的副本数量
Selector
HPA
需要安装 metrics-server
查看资源使用情况 kubectl top pod -n dev
spec
minReplicas
maxReplicas
targetCPUUtilizationPercentage
cpu使用率指标
scaleTargetRef
需要用HPA控制那些 deployment
apiVersion
kind
name
Service
子主题
namespace
用于多套环境或者多租户的资源隔离
自带的命名空间
default
kube-public
kube-system
kube-node-release
状态
Active
正常
Terminating
正在被删除
分支主题
分支主题
分支主题
通用yaml配置
apiVersoin
kind
metadata
name
namespace
labels
status
无需配置
spec
0 条评论
下一页