拓冰建站拓冰建站
首页 / 资讯中心 / 正文

k8s核心minikube搭建单点集群,kubectl高频命令

KubernetesK8s核心定义Kubernetes简称 K8s是 Google 开源的容器编排平台核心是对大规模容器化应用的全生命周期进行自动化管理小到本地单节点如 minikube、大到云环境上千节点集群都能通过 K8s 统一管控容器的部署、运行、维护和扩展。KubernetesK8s核心作用自动化管理容器生命周期替代手动操作搞定容器 “在哪里跑、跑多少个、挂了怎么处理”比如 Deployment 能自动重建挂掉的 Nginx Pod保证服务不中断解决容器管理痛点自愈能力Pod / 容器故障时自动重建保障服务可用性服务发现通过 Service 为动态变化的 Pod 提供固定访问入口避免因 Pod IP 变动导致访问失败弹性伸缩按业务负载自动增减 Pod 数量适配高峰期 / 低峰期需求滚动更新升级容器时先启动新 Pod、再删除旧 Pod全程不中断服务统一管控集群资源将多台服务器Node组成的集群视为整体智能调度 Pod 到空闲节点最大化利用硬件资源。搭建简单的单点k8s集群一.安装docker如果wget下载不了可以参考官方文档https://docs.docker.com/engine/install/centos/1.下载repo文件到本地wget -O /etc/yum.repos.d/docker.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.安装docker-ceyum -y install docker-ce3.启动docker服务并设置开机自启systemctl start docker systemctl enable docker配置镜像加速1.创建加速配置文件vim /etc/docker/daemon.json { registry-mirrors: [ https://docker.m.daocloud.io, https://1ms.run, https://dockerproxy.com, https://docker.mirrors.ustc.edu.cn, https://docker.nju.edu.cn, https://iju9kaj2.mirror.aliyuncs.com, http://hub-mirror.c.163.com, https://cr.console.aliyun.com, https://hub.docker.com, http://mirrors.ustc.edu.cn ] }2.重新加载镜像加速并重启docker服务systemctl daemon-reload systemctl restart docker二.安装kubectlKubernetes 命令行工具 kubectl 让你可以对 Kubernetes 集群运行命令。 你可以使用 kubectl 来部署应用、监测和管理集群资源以及查看日志。如果需要其他版本或者使用原生包安装访问官方文档https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/用 curl 在 Linux 系统中安装 kubectlcurl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl安装 kubectlsudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl查看版本kubectl version --client三.安装minikube它是用来在本地快速搭建单节点 Kubernetes 集群的工具非常适合学习和开发测试官方网站多种下载方式https://minikube.sigs.k8s.io/docs/start/?arch%2Flinux%2Fx86-64%2Fstable%2Frpmpackage下载minikube包curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpmrpm安装rpm -Uvh minikube-latest.x86_64.rpm查看版本并启动minikube version minikube start --memory2048mb用kubectl 命令简单部署 Nginx1. 创建 Nginx Deploymentkubectl create deployment nginx-deploy --imagenginx:alpine # 查看 Deployment 状态确认创建成功 kubectl get deployments2. 暴露 Nginx 为 NodePort 服务# 暴露服务端口 80类型 NodePort kubectl expose deployment nginx-deploy --port80 --typeNodePort # 查看 Service 信息获取自动分配的 NodePort 端口如 31234 kubectl get services nginx-deploy3. 访问 Nginx 服务minikube service nginx-deploy4. 扩缩容 Nginx 副本数# 扩为 3 个副本 kubectl scale deployment nginx --replicas3 # 验证副本数 kubectl get pods5. 删除部署的 Nginx不想用了可以一键删除# 删除 Service kubectl delete svc nginx # 删除 Deployment会自动删除 Pod kubectl delete deployment nginxkubectl高频命令1.集群状态查看kubectl get 资源类型kubectl get pods查看所有 Podkubectl get deployments查看所有 Deploymentkubectl get services查看所有 Servicekubectl get nodes查看集群节点2. 应用部署与管理部署 / 更新 / 删除kubectl create deployment 名称 --image镜像--快速创建 Deploymentkubectl expose deployment 名称 --port端口 --type类型--暴露 Service对外访问# 创建名为 nginx-service 的 ClusterIP Service关联 appnginx 的 Podkubectl create service clusterip nginx-service --tcp80:80# 删除 Servicekubectl delete svc nginx# 删除 Deployment会自动删除 Podkubectl delete deployment nginx3. 故障排查与调试定位问题核心kubectl exec -it Pod名称 -- 命令进入 Pod 内部调试kubectl exec -it nginx-deploy-7f979d87c8-9x78z -- /bin/bash为什么要创建deploy而不是podPod 是 “一次性容器实例”无自愈、无管理能力Deployment 是 Pod 的 “生命周期管家”能解决 Pod 裸跑的所有致命问题。Pod 的本质局限Pod 是 K8s 最小的运行单元但属于 “一次性、无自愈能力” 的裸奔实例 ——Pod 挂了 / 被删了不会自动重建也无法一键扩容、无版本管理能力仅适合临时测试 / 调试完全无法满足长期运行服务的稳定性需求。Deployment 的核心价值作为 Pod 的 “生命周期管家”Deployment 会通过 ReplicaSet 管理 Pod核心提供三大关键能力自愈确保始终有指定数量的 Pod 运行Pod 挂了 / 被删了自动重建保障服务不中断弹性伸缩一键扩容 / 缩容 Pod 数量如kubectl scale适配业务流量变化无损更新支持滚动更新先启新 Pod 再删旧 Pod和版本回滚升级服务时不中断业务。什么情况下创建pod总结直接创建 Pod 的唯一场景临时测试镜像、集群调试排查问题、执行一次性批处理任务均为短期、非核心场景核心禁忌长期运行的服务、生产环境服务、需要高可用 / 扩容 / 更新的服务绝对不能直接创建 Pod底层逻辑K8s 设计 Pod 为 “易失单元”控制器Deployment才是保障服务稳定性的核心直接创建 Pod 等于放弃 K8s 的核心能力。简单说直接创建 Pod 是 “临时用一下就扔”用 Deployment 是 “长期养着并保障不出问题”。这是我的个人学习笔记主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段内容中难免存在理解偏差或表述疏漏恳请各位大佬不吝赐教多提宝贵意见 若有不同看法欢迎理性交流探讨感谢包容与指正
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门