K8s入门
哈哈,说到熟练使用K8s需要掌握的知识点,我来给你系统梳理一下!作为一个"K8s老司机",我觉得这些知识点是必须掌握的,就像学开车要先知道方向盘和刹车一样~ 😄
✨ K8s核心知识点清单(新手友好版)
🌟 基础架构与核心概念(必知必会)
-
Pod:K8s最小的部署单元,一个Pod里可以有多个容器(但通常只放一个)
-
Deployment:管理Pod的副本,实现滚动更新和回滚
-
Service:提供统一的访问入口,实现负载均衡
ClusterIP(集群内部访问)
NodePort(节点端口暴露)
LoadBalancer(云平台负载均衡)
Ingress(HTTP/HTTPS路由,高级用法) -
Node:集群中的工作节点,可以理解为"服务器"
-
kubectl:K8s的命令行工具,就像你的"K8s指挥棒"
💡 小贴士:我刚开始学K8s时,总把Pod和Deployment搞混,后来发现Pod是"单个容器",Deployment是"管理多个Pod的策略",就像单个士兵 vs 一个连队!
🌐 网络与服务发现(最容易踩坑的部分) -
CNI:容器网络接口,K8s网络的基础
-
常用网络插件:
Flannel(简单好用,适合小集群)
Calico(功能强大,适合大集群,支持网络策略) -
Service类型:怎么让服务之间能互相"打招呼"
-
Ingress:实现域名路由,让外部能通过URL访问服务
🤔 我有个朋友在学K8s时,一直搞不明白为什么Service和Ingress的区别,后来我用"小区门卫"打比方:Service是小区门卫(内部访问),Ingress是小区入口(外部访问)。
💾 存储管理(别让数据"消失") -
PersistentVolume (PV):抽象存储资源
-
PersistentVolumeClaim (PVC):申请存储资源
-
ConfigMap & Secret:存储配置和敏感信息(比如数据库密码)
通过Volume挂载到容器
通过环境变量注入
💡 重要提醒:别忘了在YAML里配置资源请求和限制,不然你的应用可能被"饿死"或"撑死"!
⚙️ 资源管理与优化(让K8s跑得更快更稳) -
资源请求与限制:
yaml
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m" -
Horizontal Pod Autoscaler (HPA):自动扩缩容
yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
targetCPUUtilizationPercentage: 50
minReplicas: 2
maxReplicas: 10 -
JVM优化:Java应用特别要注意-XX:ActiveProcessorCount参数
🛠️ 高级运维技巧(让你从"会用"到"精通") -
kubectl高效操作:
自动补全(source <(kubectl completion bash))
上下文切换(kubectl config use-context)
强制删除卡住的Pod(kubectl delete pod--force --grace-period=0) -
滚动更新与回滚:
bash
kubectl set image deployment/nginx nginx=nginx:1.25
kubectl rollout status deployment/nginx
kubectl rollout undo deployment/nginx -
故障排查:
kubectl describe pod查看详细信息
kubectl logs查看日志
kubectl exec -it-- /bin/bash 进入容器
🔐 安全与认证(别让系统"裸奔") -
RBAC:基于角色的访问控制
-
证书管理:为用户生成TLS证书
-
网络策略:控制Pod之间的网络通信
💡 我的学习经验分享:
刚开始学K8s时,我也是被这些概念绕晕了。后来我发现,与其死记硬背,不如从实际问题出发:
- 想想你想要做什么:部署一个Web应用?实现自动扩缩容?
- 找到对应的K8s资源:Deployment + Service + HPA
- 一步步实现,从简单开始
比如,我最初只是想在K8s上跑个Nginx,先用kubectl run创建一个Pod,然后暴露为Service,最后加个HPA实现自动扩缩容。每一步都成功了,信心就越来越足!
🚀 最后的小建议:
- 不要贪多:先掌握基础概念,再慢慢深入
- 动手实践:理论学得再好,不如自己动手部署一次
- 用好kubectl:这是你最常用的工具,熟练它能事半功倍
🌟 有个小技巧:在本地用Docker Desktop安装K8s(就像[2]里说的),可以快速上手,不用担心环境问题。我刚开始就是在Windows上用Docker Desktop学的,超方便!
浙公网安备 33010602011771号