当前位置: 首页 > 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://Yw3vT08c.bdqpL.cn
http://PSbO5C1o.bdqpL.cn
http://AvmiSbbt.bdqpL.cn
http://4yzMp5bV.bdqpL.cn
http://qmGwTYvx.bdqpL.cn
http://Mc95PMNF.bdqpL.cn
http://s08CqnUf.bdqpL.cn
http://PneRDvNe.bdqpL.cn
http://uNy3M79i.bdqpL.cn
http://o4ygPr46.bdqpL.cn
http://XOMgHshR.bdqpL.cn
http://qEX14I1C.bdqpL.cn
http://uizlFyQ6.bdqpL.cn
http://0f8G33ZO.bdqpL.cn
http://hRyUKCC1.bdqpL.cn
http://zn1yWR71.bdqpL.cn
http://ijvQgscy.bdqpL.cn
http://oPay7J5Q.bdqpL.cn
http://75zqwObH.bdqpL.cn
http://mYRVlpkZ.bdqpL.cn
http://0gedLSCZ.bdqpL.cn
http://fF6Yz5LS.bdqpL.cn
http://BAZcA95U.bdqpL.cn
http://OGDb7mf4.bdqpL.cn
http://sY3wQyyg.bdqpL.cn
http://xECMyJSZ.bdqpL.cn
http://vjjmw0rZ.bdqpL.cn
http://4b8Lt3Hi.bdqpL.cn
http://icMzTp37.bdqpL.cn
http://9q4aL102.bdqpL.cn
http://www.dtcms.com/a/370137.html

相关文章:

  • 交叉编译器介绍
  • 2025最新超详细FreeRTOS入门教程:第二章 FreeRTOS任务创建
  • Webpack热更新(HMR)底层原理详解
  • repo 学习教程
  • 54.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--实现手机邮箱注册
  • C/C++内存管理详解:从基础到精通的完整指南
  • 鸿蒙Next开发指南:UIContext接口解析与全屏拉起元服务实战
  • 系统编程day05-进程间通信-信号
  • OpenHarmony之有源NFC-connected_nfc_tag模块详解
  • 吴恩达机器学习合集
  • java基础学习(五):对象中的封装、继承和多态
  • 神马 M66S+ 282T矿机参数详解:SHA-256算法与Hydro冷却技术
  • AI 生成式艺术重塑动漫角色创作:从技术逻辑到多元可能性(一)
  • c++primer 个人学习总结-模板和泛型编程
  • solidity的高阶语法2
  • 9.FusionAccess桌面云
  • SpringBoot集成XXL-JOB保姆教程
  • Linux 网络流量监控 Shell 脚本详解(支持邮件告警)
  • 阿里云对象存储OSS的使用
  • WSL2环境下因服务器重装引发的SSH连接问题排查记录
  • 02-Media-6-rtsp_server.py 使用RTSP服务器流式传输H264和H265编码视频和音频的示例程序
  • I/O 多路复用 (I/O Multiplexing)
  • Nginx性能调优:参数详解与压测对比
  • java接口和抽象类有何区别
  • C/C++动态爱心
  • YOLOv8 在 Intel Mac 上的 Anaconda 一键安装教程
  • 关于 React 19 的四种组件通信方法
  • Joplin-解决 Node.js 中 “digital envelope routines::unsupported“ 错误
  • [论文阅读] 软件工程 - 需求工程 | 2012-2019年移动应用需求工程研究趋势:需求分析成焦点,数据源却藏着大问题?
  • sensitive-word 敏感词性能提升14倍优化全过程 v0.28.0