跳到主要内容

K3s 集群基本操作指令

概述

本指南介绍了 K3s 集群的基本操作,包括节点管理、服务管理、部署管理等常用命令。

目标

  • 掌握 K3s 集群的基本操作命令
  • 能够进行日常的集群维护和管理
  • 理解各种资源的管理方式

前置条件

  • 已成功部署 K3s 集群
  • 具备集群访问权限
  • 熟悉基本的 Linux 命令行操作

步骤

集群信息查看

查看集群信息

kubectl cluster-info

查看节点状态

kubectl get nodes

查看节点详细信息

kubectl describe node <node-name>

Pod 管理

查看所有 Pod

kubectl get pods -A

查看特定命名空间的 Pod

kubectl get pods -n <namespace>

查看 Pod 详细信息

kubectl describe pod <pod-name> -n <namespace>

查看 Pod 日志

kubectl logs <pod-name> -n <namespace>

进入 Pod 容器

kubectl exec -it <pod-name> -n <namespace> -- sh

Deployment 管理

创建 Deployment

kubectl create deployment nginx --image=nginx

查看 Deployment

kubectl get deployments

扩缩容 Deployment

kubectl scale deployment nginx --replicas=3

更新 Deployment 镜像

kubectl set image deployment/nginx nginx=nginx:1.19

删除 Deployment

kubectl delete deployment nginx

Service 管理

创建 Service

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

查看 Service

kubectl get services

使用简短别名查看 Service

kubectl get svc

查看所有命名空间下的 Service

kubectl get svc -A

查看特定命名空间下的所有 Service

kubectl get svc -n <namespace>

通过 YAML 格式查看 Service 详细信息

kubectl get service <service-name> -o yaml

编辑 Service

kubectl edit service <service-name>

为 Service 添加标签

kubectl label service <service-name> key=value

查看 Service 的端点

kubectl get endpoints <service-name>

查看 Service 详细信息

kubectl describe service <service-name>

删除 Service

kubectl delete service <service-name>

Ingress 管理

查看 Ingress 控制器

kubectl get ingressclasses

创建 Ingress (示例)

cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
EOF

查看 Ingress

kubectl get ingress

查看 Ingress 详细信息

kubectl describe ingress <ingress-name>

删除 Ingress

kubectl delete ingress <ingress-name>

存储卷管理

查看 PersistentVolume (PV)

kubectl get pv

查看 PersistentVolumeClaim (PVC)

kubectl get pvc

查看 PVC 详细信息

kubectl describe pvc <pvc-name>

创建 PersistentVolumeClaim (示例)

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
EOF

命名空间管理

查看所有命名空间

kubectl get namespaces

创建命名空间

kubectl create namespace <namespace-name>

删除命名空间

kubectl delete namespace <namespace-name>

配置管理

创建 ConfigMap

kubectl create configmap <configmap-name> --from-literal=key=value

查看 ConfigMap

kubectl get configmaps

删除 ConfigMap

kubectl delete configmap <configmap-name>

密钥管理

创建 Secret

kubectl create secret generic <secret-name> --from-literal=username=admin --from-literal=password=123456

查看 Secret

kubectl get secrets

删除 Secret

kubectl delete secret <secret-name>

节点管理

查看节点标签

kubectl get nodes --show-labels

为节点添加标签

kubectl label nodes <node-name> key=value

资源配额管理

查看 ResourceQuota

kubectl get resourcequota

创建 ResourceQuota (示例)

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ResourceQuota
metadata:
name: demo-resource-quota
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
persistentvolumeclaims: "4"
services.loadbalancers: "2"
EOF

查看 ResourceQuota 使用情况

kubectl describe resourcequota <resourcequota-name>

自动扩缩容管理

查看 HorizontalPodAutoscaler (HPA)

kubectl get hpa

创建 HPA (示例)

kubectl autoscale deployment nginx --cpu-percent=50 --min=1 --max=10

查看 HPA 详细信息

kubectl describe hpa <hpa-name>

删除 HPA

kubectl delete hpa <hpa-name>

任务管理

创建 Job (示例)

cat <<EOF | kubectl apply -f -
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
EOF

查看 Job

kubectl get jobs

查看 Job 详细信息

kubectl describe job <job-name>

删除 Job

kubectl delete job <job-name>

创建 CronJob (示例)

cat <<EOF | kubectl apply -f -
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
EOF

查看 CronJob

kubectl get cronjobs

查看 CronJob 详细信息

kubectl describe cronjob <cronjob-name>

删除 CronJob

kubectl delete cronjob <cronjob-name>

验证

通过执行上述命令,可以验证集群的基本功能是否正常运行。

故障排除

  • 如果命令执行失败,请检查集群状态和权限配置
  • 确保 kubectl 工具已正确配置并指向正确的集群

最佳实践

  • 定期检查集群状态和资源使用情况
  • 使用命名空间隔离不同的应用环境
  • 合理设置资源配额和限制

参考资料