当前位置: 首页 > news >正文

Kubernetes (k8s)

Kubernetes (k8s)

以下是一份 ​Kubernetes (k8s) 基础使用教程,涵盖从环境搭建到核心操作的完整流程,附详细命令和示例:

🚀 ​一、环境准备(3种方式)​​
​1. 本地开发环境(推荐)​​

安装 Minikube(单节点集群)

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

启动集群(需提前安装 Docker)

minikube start --driver=docker

验证

kubectl get nodes # 应显示一个节点状态 Ready
​2. 生产环境​

  • ​云服务​:使用托管K8s服务# AWS EKS
    eksctl create cluster --name my-cluster --region us-east-1

Google GKE

gcloud container clusters create my-cluster
​3. 学习环境​

  • Play with Kubernetes(免费在线沙盒)

⚙️ ​二、核心概念与操作​
​1. 部署第一个应用​

运行Nginx容器

kubectl create deployment nginx-app --image=nginx:1.25

查看Pod(容器组)

kubectl get pods -w # -w 实时监控状态变化
​输出示例​:
NAME READY STATUS RESTARTS AGE
nginx-app-5d96f8d7b6-2k9jf 1/1 Running 0 25s
​2. 暴露服务​

创建Service(负载均衡)

kubectl expose deployment nginx-app --port=80 --type=NodePort

获取访问地址

minikube service nginx-app --url # 本地环境

输出:http://192.168.49.2:32456

浏览器打开URL应看到Nginx欢迎页
​3. 扩缩容​

扩容到3个副本

kubectl scale deployment nginx-app --replicas=3

查看Pod分布

kubectl get pods -o wide
​输出​:
nginx-app-5d96f8b7b6-2k9jf 1/1 Running 0 2m node1
nginx-app-5d96f8b7b6-8x7pd 1/1 Running 0 10s node2
nginx-app-5d96f8b7b6-qw4k9 1/1 Running 0 10s node1

📁 ​三、YAML声明式管理​
​1. 部署文件示例​
deploy.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-web
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
resources:
limits:
memory: “128Mi”
cpu: “500m”

apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
​2. 应用配置​

创建资源

kubectl apply -f deploy.yaml

更新配置(修改文件后重新运行)

kubectl apply -f deploy.yaml

删除资源

kubectl delete -f deploy.yaml

🔍 ​四、日常运维命令​
​1. 查看资源​
kubectl get pods # 查看Pod
kubectl get svc # 查看Service
kubectl get deployments # 查看部署
kubectl describe pod <pod名> # 查看Pod详情
​2. 调试与日志​

进入Pod的Shell

kubectl exec -it <pod名> – /bin/bash

查看日志

kubectl logs <pod名> -f # -f 实时跟踪日志

端口转发(访问内部服务)

kubectl port-forward svc/web-service 8080:80
浏览器访问 http://localhost:8080
​3. 故障排查​

查看事件(定位启动失败原因)

kubectl get events --sort-by=.metadata.creationTimestamp

查看节点状态

kubectl top nodes # 需安装Metrics Server

🛠️ ​五、进阶操作​
​1. 配置管理​

创建ConfigMap

kubectl create configmap my-config
–from-literal=LOG_LEVEL=debug
–from-file=config.properties

Pod中挂载

spec:
containers:
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-config
key: LOG_LEVEL
volumeMounts:
- name: config-vol
mountPath: /etc/config
volumes:
- name: config-vol
configMap:
name: my-config
​2. 存储卷​

持久卷声明 (PVC)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi

Pod挂载

spec:
containers:
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumes:

  • name: data
    persistentVolumeClaim:
    claimName: mysql-pvc

🚨 ​六、常见问题解决​
​1. Pod卡在Pending状态​

查看原因

kubectl describe pod <pod名> | grep Events -A20

常见原因:

- 资源不足(CPU/内存)

- 没有可用节点(节点NotReady)

​2. 服务无法访问​

检查Service选择器是否匹配Pod标签

kubectl describe svc <service名>

验证网络策略

kubectl get networkpolicy

📚 ​七、学习资源​
1.​官方文档​:kubernetes.io/docs
2.​交互式教程​:Katacoda Kubernetes
3.​命令备忘单​:kubectl Cheat Sheet

✅ ​快速总结表​
​操作​​命令​部署应用kubectl create deploy <名> --image=<镜像>暴露服务kubectl expose deploy <名> --port=<端口>查看Podkubectl get pods -w进入容器kubectl exec -it <pod名> -- bash查看日志kubectl logs <pod名> -f扩缩容kubectl scale deploy/<名> --replicas=N应用YAMLkubectl apply -f file.yaml删除资源kubectl delete -f file.yaml

​提示​:生产环境务必配置:

  • 资源限制(CPU/内存)
  • 就绪探针(Readiness Probe)
  • 存活探针(Liveness Probe)
  • HPA(自动扩缩容)
    掌握以上基础操作后,可进一步学习Ingress、Helm、Operator等高级功能!
http://www.xdnf.cn/news/1474003.html

相关文章:

  • MySQL连接字符串中的安全与性能参数详解
  • Monorepo 是什么?如何使用并写自己的第三方库
  • 聊聊OAuth2.0和OIDC
  • 音转文模型对比FunASR与Faster_whisper
  • 《sklearn机器学习——聚类性能指标》Contingency Matrix(列联表)详解
  • PlantSimulation 在汽车总装车间配送物流仿真中的应用
  • Fantasia3D:高质量文本到3D内容创建工具
  • 【基础-判断】架构设计时需要考虑“一次开发,多端部署”,这样可以节省跨设备UI开发工作量,同时提升应用部署的伸缩性。
  • 【基础-判断】Background状态在UIAbility实例销毁时触发,可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
  • wpf之TextBlock
  • Altium Designer(AD24)切换工作界面为浅灰色的方法
  • 怎么用 tauri 创建一个桌面应用程序(Electron)
  • 新手SEO优化快速起步教程
  • C++ Lambda 表达式完整指南
  • Python 正则表达式实战:用 Match 对象轻松解析拼接数据流
  • SpringAMQP
  • EMS 抗扰度在边缘计算产品电路设计的基本问题
  • 《AI大模型应知应会100篇》第68篇:移动应用中的大模型功能开发 —— 用 React Native 打造你的语音笔记摘要 App
  • 深入剖析Spring Boot自动配置原理
  • JAVA同城打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
  • Android模拟简单的网络请求框架Retrofit实现
  • 具身智能模拟器:解决机器人实机训练场景局限与成本问题的创新方案
  • 【尚跑】2025逐日者15KM社区赛西安湖站,74分安全完赛
  • 腾讯混元游戏视觉生成平台正式发布2.0版本
  • 软件设计师备考资料与高效复习方法分享
  • 小米笔记本电脑重装C盘教程
  • Spring MVC 处理请求的流程
  • 提示语规则引擎:spring-ai整合liteflow
  • [Upscayl图像增强] 多种AI处理模型 | 内置模型与自定义模型
  • IDEA修改系统缓存路径,防止C盘爆满