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