Skip to content

K3s 集群基本操作指令 ​

概述 ​

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

目标 ​

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

前置条件 ​

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

步骤 ​

集群信息查看 ​

查看集群信息 ​

bash
kubectl cluster-info

查看节点状态 ​

bash
kubectl get nodes

查看节点详细信息 ​

bash
kubectl describe node <node-name>

Pod 管理 ​

查看所有 Pod ​

bash
kubectl get pods -A

查看特定命名空间的 Pod ​

bash
kubectl get pods -n <namespace>

查看 Pod 详细信息 ​

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

查看 Pod 日志 ​

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

进入 Pod 容器 ​

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

Deployment 管理 ​

创建 Deployment ​

bash
kubectl create deployment nginx --image=nginx

查看 Deployment ​

bash
kubectl get deployments

扩缩容 Deployment ​

bash
kubectl scale deployment nginx --replicas=3

更新 Deployment 镜像 ​

bash
kubectl set image deployment/nginx nginx=nginx:1.19

删除 Deployment ​

bash
kubectl delete deployment nginx

Service 管理 ​

创建 Service ​

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

查看 Service ​

bash
kubectl get services

使用简短别名查看 Service ​

bash
kubectl get svc

查看所有命名空间下的 Service ​

bash
kubectl get svc -A

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

bash
kubectl get svc -n <namespace>

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

bash
kubectl get service <service-name> -o yaml

编辑 Service ​

bash
kubectl edit service <service-name>

为 Service 添加标签 ​

bash
kubectl label service <service-name> key=value

查看 Service 的端点 ​

bash
kubectl get endpoints <service-name>

查看 Service 详细信息 ​

bash
kubectl describe service <service-name>

删除 Service ​

bash
kubectl delete service <service-name>

Ingress 管理 ​

查看 Ingress 控制器 ​

bash
kubectl get ingressclasses

创建 Ingress (示例) ​

bash
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 ​

bash
kubectl get ingress

查看 Ingress 详细信息 ​

bash
kubectl describe ingress <ingress-name>

删除 Ingress ​

bash
kubectl delete ingress <ingress-name>

存储卷管理 ​

查看 PersistentVolume (PV) ​

bash
kubectl get pv

查看 PersistentVolumeClaim (PVC) ​

bash
kubectl get pvc

查看 PVC 详细信息 ​

bash
kubectl describe pvc <pvc-name>

创建 PersistentVolumeClaim (示例) ​

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

命名空间管理 ​

查看所有命名空间 ​

bash
kubectl get namespaces

创建命名空间 ​

bash
kubectl create namespace <namespace-name>

删除命名空间 ​

bash
kubectl delete namespace <namespace-name>

配置管理 ​

创建 ConfigMap ​

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

查看 ConfigMap ​

bash
kubectl get configmaps

删除 ConfigMap ​

bash
kubectl delete configmap <configmap-name>

密钥管理 ​

创建 Secret ​

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

查看 Secret ​

bash
kubectl get secrets

删除 Secret ​

bash
kubectl delete secret <secret-name>

节点管理 ​

查看节点标签 ​

bash
kubectl get nodes --show-labels

为节点添加标签 ​

bash
kubectl label nodes <node-name> key=value

资源配额管理 ​

查看 ResourceQuota ​

bash
kubectl get resourcequota

创建 ResourceQuota (示例) ​

bash
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 使用情况 ​

bash
kubectl describe resourcequota <resourcequota-name>

自动扩缩容管理 ​

查看 HorizontalPodAutoscaler (HPA) ​

bash
kubectl get hpa

创建 HPA (示例) ​

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

查看 HPA 详细信息 ​

bash
kubectl describe hpa <hpa-name>

删除 HPA ​

bash
kubectl delete hpa <hpa-name>

任务管理 ​

创建 Job (示例) ​

bash
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 ​

bash
kubectl get jobs

查看 Job 详细信息 ​

bash
kubectl describe job <job-name>

删除 Job ​

bash
kubectl delete job <job-name>

创建 CronJob (示例) ​

bash
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 ​

bash
kubectl get cronjobs

查看 CronJob 详细信息 ​

bash
kubectl describe cronjob <cronjob-name>

删除 CronJob ​

bash
kubectl delete cronjob <cronjob-name>

验证 ​

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

故障排除 ​

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

最佳实践 ​

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

参考资料 ​