Kubernetes学习指北之Kubernetes kubectl
Kubernetes学习指北之Kubernetes kubectl
一、 kubectl 介绍
kubectl是 Kubernetes 官方提供的命令行工具,用于与 Kubernetes 集群交互。它可以管理资源对象(Pods、Deployments、Services 等)、调试问题、查看日志、扩缩容、发布更新等。
本质上,它通过 Kubernetes API 与集群通信。
组件关系示意:
1kubectl <---> kube-apiserver <---> etcd / kubelet / controller-manager / scheduler
二、安装与配置
1. 安装(Linux):
1curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
2chmod +x kubectl
3sudo mv kubectl /usr/local/bin/
4kubectl version --client
2. 配置 kubeconfig
- 默认路径:~/.kube/config
- 查看当前配置:
1kubectl config view
2kubectl config current-context
- 切换 namespace:
1kubectl config set-context --current --namespace=demo
三、基础命令
1. 查看集群信息
1kubectl cluster-info # 控制面信息
2kubectl version # 客户端 & 服务端版本
3kubectl api-resources # 列出可用资源
4kubectl get namespaces # 查看命名空间
2. 查看节点
1kubectl get nodes
2kubectl describe node <node-name>
四、命名空间管理
1kubectl create namespace demo
2kubectl get namespaces
3kubectl delete namespace demo
- 使用 -n
指定命名空间:
1kubectl get pods -n demo
2kubectl apply -f deployment.yaml -n demo
- 设置默认 namespace:
1kubectl config set-context --current --namespace=demo
五、Pods、Deployment、Service 管理
1. 查看资源
1kubectl get pods
2kubectl get deployments
3kubectl get svc
4kubectl get all
5kubectl describe pod <pod-name>
2. 创建 / 更新 / 删除
1kubectl apply -f <file.yaml> # 创建或更新
2kubectl delete -f <file.yaml> # 删除
3.Pod 调试
1kubectl logs <pod-name>
2kubectl exec -it <pod-name> -- /bin/bash
3kubectl port-forward <pod-name> 8080:80
4. Deployment 滚动更新与回滚
1kubectl rollout status deployment/<name>
2kubectl rollout history deployment/<name>
3kubectl rollout undo deployment/<name>
4kubectl scale deployment/<name> --replicas=3
六、ConfigMap 和 Secret
1. ConfigMap
1kubectl create configmap my-config --from-literal=key=value
2kubectl apply -f configmap.yaml
3kubectl get configmap
4kubectl describe configmap my-config
2. Secret
1kubectl create secret generic my-secret \
2 --from-literal=username=admin \
3 --from-literal=password=123456
4kubectl get secret
5kubectl describe secret my-secret
- Secret 可以在 Pod 中挂载为环境变量或文件:
1env:
2- name: DB_USER
3 valueFrom:
4 secretKeyRef:
5 name: my-secret
6 key: username
七、DaemonSet 与 StatefulSet
1kubectl get daemonset -n kube-system
2kubectl describe daemonset <name> -n <namespace>
3
4kubectl get statefulset
5kubectl describe statefulset <name>
八、标签和选择器
- 查看标签:
1kubectl get pods --show-labels
- 按标签选择:
1kubectl get pods -l app=nginx
2kubectl label pod <pod-name> env=dev
3kubectl annotate pod <pod-name> key=value
九、资源调试与事件
1kubectl get events
2kubectl describe pod <pod-name>
3kubectl top node
4kubectl top pod
十、批量与导出操作
- 批量操作:
1kubectl apply -f ./manifests
2kubectl delete -f ./manifests
- 导出资源:
1kubectl get deployment <name> -o yaml > deployment.yaml
2kubectl get all -n demo -o yaml > demo-all.yaml
十一、其他操作
端口转发
1kubectl port-forward deployment/nginx 8080:80
访问 Pod 内部网络
1kubectl exec -it <pod-name> -- ping <service-name>
2kubectl exec -it <pod-name> -- curl http://<service-name>:<port>
Debug Pod
1kubectl describe pod <pod-name>
2kubectl logs <pod-name>
3kubectl exec -it <pod-name> -- bash
十二、 步骤总结
比如现在有laravel/k8s/文件结构:
k8s/
├─ namespace.yaml
├─ mysql-secret.yaml
├─ laravel-deployment.yaml
└─ laravel-service.yaml
1# 创建 namespace
2kubectl apply -f namespace.yaml
3
4# 创建 Secret
5kubectl apply -f mysql-secret.yaml
6
7# 部署 Laravel
8kubectl apply -f laravel-deployment.yaml
9
10# 创建 Service
11kubectl apply -f laravel-service.yaml
12
13# 查看 Pod 状态
14kubectl get pods -n demo -w
15
16# 查看 Service
17kubectl get svc -n demo
18
19# 调试 Pod
20kubectl logs -n demo <pod-name>
21kubectl exec -it -n demo <pod-name> -- bash
发表评论