K8S是什么
K8S就是容器集群管理系统,可以实现容器集群的自动化部署,自动化扩容维护,直接可以理解就是管理容器的 nice
条件是什么
selinux禁用,
swap禁用
fireword 删除吧
核心角色
master: 被称为管理节点,主要对集群进行控制,对全局起决策作用检测和响应集群事件;
node : 运行容器的实际节点,维护运行POD,并提供具体应用的运行环境,水平扩展,多个节点上运行
image:镜像仓库,存放镜像的(容器是镜像创建出来的)
master
API-server:集群的统一入口,各组件协调者,以HTTP API提供接口服务,Kubernetes里所有资源的增删改查和监听操作都交APIServer处理后再提交给Etcd存储。
Scheduler:对集群内部资源调度,端口10252
Etcd:分布式键值对数据库,分布式系统服务资源共享端口2379-2380
Controllermanager:管理控制器 服务组成 端口10252,可以理解为资源对象的大总管
node
Kubelet:运行容器的生命周期,负责Pod对应容器的创建、启停等任务
Kubelet-proxy:为POD提供代理,实现节点负载均衡,docker容器管理
POD
是K8S的调度最基本单元,包含1个或多个容器。服务多个进程聚合单位
node加入集群需要master认证
token: 相当于证明文件。需要得到master认证。
token-ca-cert-hash:验证文件的真伪
命令:
kubeadn token 指令
列出 kubeadm token list
删除 kubeadm token delete
创建 kubeadm token create
容器创建过程
1。用户发请求给Api-server
2。Api-server记录到Etcd数据库中
3。Api-server给用户返回结果,客户端已经执行完成
4。Api-server调用Scheduler为容器选择运行的主机
5。Scheduler返回容器的调度结果
6。Api-server把结果记录到Etcd中
7。Api-server调用对应主机的kubelet创建容器
8。kubelet调用本机的docker完成容器的创建,并返回结果给Api-server
9。Api-server把结果记录到Etcd中
总结:用户创建POD首先给APIserver发命令,API-server把命令记录在etcd数据库,API-server然后在找Scheduler(筛选条件不足,和优选条件较优)调度分配给后端节点再把分配记录在etcd数据库,返回给APIserver再找节点Kubelet调用docker 创建容器,Kubelet返回给APIserver,再次记录在etcd数据库。
POD生命周期
从启动到关闭是POD生命周期,
1>启动后脚本(钩子):主容器开始启动,还会启动类似命令脚本,比如,新创建mysql容器后第一步需要初始化,所以把命令写入脚本,启动是,直接运行。默认为空
2>结束前脚步:关掉容器前需要执行的命令脚本,比如,web容器需要清理缓存。默认为空
3>生存探测器:如果容器运行失败,自动会重启容器。
4>就绪探测器:如果没有就绪,会变成noready 默认为空
POD相位状态
pending 容器创建过程中,尚未完成调度
runing 所有容器都被kubelet创建完成
succeed 所有容器都已经成功终止了
从相位状态可以排错,可以根据创建容器过程找出问题
资源文件
介绍: k8s通过RC/RS管理POD,在RC定义了如何启动pod,启动几副功能,如何运行。。使用的YAML语法,相当于自定义POD而实现需要的业务
命令:
kubectl apply | delete -f 资源文件 //创建 | 删除
集群扩容与缩减
replicas 决定了集群pod的数量
举例:
创建一个单节点的web容器
kubectl apply -f apache.yaml (写好的yaml文件)
创建三个web容器
kubectl scale deployment myapache --replicas=3
查看 生成控制器
kubectl get deployments.apps
修改配服务,即使生效
kubectl edit deployments.apps apache
集群更新与回滚
deployments控制器支持。
更新,完全体现出了K8S的优势,
更新:举个例子,公司目前使用的是httpd,web服务器,但是公司老板说, 我们需要nginx来实现web服务器。所以需要更新目前服务容器。
1>查看myapache 历史版本
kubectl rollout history deployment myapache
2>修改myapache.yml 文件中的版本,提高辨识度。和镜像
kubernetes.io/change-cause: nginx.v1 //将版本换成nginx
image: 192.168.1.100:5000/myos:nginx //将镜像地址换成nginx
回滚
可以理解为,又想回httpd版本。
1>查看myapache 历史版本
kubectl rollout history deployment myapache
2>返回修改前版本 换成httpd 1代表最初始版本。
kubectl rollout undo deployment myapache --to-revision=1
节点调度
指定服务器:
指定一个node上生成容器,
1> vim myapache.yaml //修改yaml文件增加即可
spec: //容器的详细信息
nodeName: node-0001 # 新增一行 指定节点服务器
2>kubectl apply -f myapache.yaml 修改完启动文件
标签调度
给节点服务器打上标签,根据标签来选择需要的节点

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐