K8S总结

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 修改完启动文件
标签调度
给节点服务器打上标签,根据标签来选择需要的节点

<think>我们正在总结Kubernetes的相关知识,包括架构、核心概念和最佳实践。根据用户的需求和提供的引用,我们将组织一个清晰的结构。首先,Kubernetes是一个容器编排平台,用于自动化部署、扩展和管理容器化应用。其架构是典型的二层架构(Master节点和Node节点)和server-client架构。核心概念包括:- Pod:最小部署单元,包含一个或多个容器。- ReplicaSet/Deployment:确保Pod副本数符合预期,实现滚动更新和回滚。 -Service:定义一组Pod的访问策略,提供负载均衡。- Namespace:资源隔离,实现多租户。-资源配额(ResourceQuotas):限制命名空间内的资源使用。-自动扩缩容(HPA):根据指标动态调整Pod数量。 最佳实践涉及部署策略、资源管理、监控等。 下面我们将按照架构、核心概念、最佳实践三个部分进行总结,并确保使用正确的LaTeX格式。</think>### Kubernetes 知识点总结 #### **一、架构设计** Kubernetes 采用**二层架构**(Master-Node)和 **Server-Client 模型**: 1. **Master 节点**(控制平面): - **API Server**:集群操作的唯一入口,处理 REST 请求。 - **etcd**:分布式键值存储,保存集群状态。 - **Controller Manager**:执行控制器逻辑(如副本数维护)。 - **Scheduler**:将 Pod 分配到 Node 节点。 2. **Node 节点**(工作节点): - **kubelet**:管理 Pod 生命周期,与 API Server 通信。 - **kube-proxy**:实现 Service 的网络代理和负载均衡。 - **容器运行时**(如 Docker):运行容器。 > 引用[^2]:Kubernetes 架构是典型的二层架构,负责应用的部署、弹性及管理。 #### **二、核心概念** 1. **Pod** - 最小部署单元,包含一个或多个容器(共享网络/存储)。 - 示例:`web-app` Pod 包含 Nginx 和日志收集容器。 2. **Deployment** - 声明式管理 Pod 副本集,支持滚动更新和回滚。 - 示例:通过 `kubectl rollout undo` 回滚有问题的版本。 3. **Service** - 为一组 Pod 提供固定访问入口,实现负载均衡[^5]。 - 类型:`ClusterIP`(内部访问)、`NodePort`(节点端口)、`LoadBalancer`(云厂商负载均衡)。 4. **Namespace** - 资源隔离机制,支持多租户环境(如 `dev`/`prod` 命名空间)[^4]。 - 关键配置:资源配额(Resource Quotas)限制 CPU/内存用量。 5. **自动扩缩容(HPA)** - 根据 CPU 使用率或自定义指标(如 QPS)动态调整 Pod 数量[^5]。 - 公式:目标副本数 $=\left\lceil \frac{\text{当前指标值}}{\text{目标指标值}} \times \text{当前副本数} \right\rceil$。 6. **ConfigMap & Secret** - **ConfigMap**:存储非敏感配置(如环境变量)。 - **Secret**:加密管理敏感数据(如密码、密钥)。 #### **三、最佳实践** 1. **资源管理** - 为 Pod 设置 `requests`(最低资源需求)和 `limits`(最高资源上限),避免资源争抢。 - 示例 YAML: ```yaml resources: requests: cpu: "100m" memory: "256Mi" limits: cpu: "200m" memory: "512Mi" ``` 2. **高可用部署** - Master 节点多副本部署(结合 etcd 集群)。 - 应用多副本 + 反亲和性(`podAntiAffinity`),分散 Pod 到不同 Node。 3. **安全实践** - 使用 **RBAC**(基于角色的访问控制)限制用户权限。 - 启用 **Network Policies** 实现 Pod 间网络隔离。 4. **监控与日志** - 集成 **Prometheus** 收集指标,**Grafana** 可视化。 - **EFK 栈**(Elasticsearch+Fluentd+Kibana)集中管理日志。 > 引用[^1][^3]:Kubernetes 基于 Google Borg 十五年经验构建,是云原生时代的容器编排标准[^1][^3]。 --- ### 相关问题 1. **如何配置 Kubernetes 的滚动更新策略以减少服务中断?** 2. **etcd 在 Kubernetes 集群中的具体作用是什么?其数据存储机制如何保证一致性?** 3. **在混合云环境中部署 Kubernetes 有哪些关键挑战和解决方案?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值