Kubernetes 快速参考指南

一些常用的带参数的 k8s 命令

目录

这是我关于k8s 命令速查表,涵盖了 Kubernetes 最重要的命令和概念,从安装到运行容器以及清理:

k8s lights

Kubernetes 安装

使用 Kubeadm

使用 kubeadm 安装 Kubernetes 的步骤如下:

  1. 准备环境

    • 确保启用必要的内核模块:
      sudo sysctl net/bridge/bridge-nf-call-ip6tables=1
      sudo sysctl net/bridge/bridge-nf-call-iptables=1
      sudo sysctl net/bridge/bridge-nf-call-arptables=1
      
    • 重启系统以应用更改。
  2. 安装 Docker 和其他依赖项

    • 安装 Docker:
      sudo apt-get update
      sudo apt-get install -y docker.io
      
    • 安装 ebtablesethtool
      sudo apt-get install ebtables ethtool
      
    • 安装 HTTPS 支持和 curl(如需要):
      sudo apt-get update
      sudo apt-get install -y apt-transport-https curl
      
    • 添加 Kubernetes 仓库并安装 kubeadmkubeletkubectl
      curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
      deb http://apt.kubernetes.io/ kubernetes-xenial main
      EOF
      sudo apt-get update
      sudo apt-get install -y kubeadm kubelet kubectl
      
  3. 初始化 Kubernetes 集群

    • 初始化第一个控制平面节点:
      sudo kubeadm init
      
    • 加入其他控制平面节点和工作节点:
      kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
      

使用 Minikube 或 Kind

对于本地开发,可以使用 minikubekind

  • Minikube

    minikube start
    

    请参考官方 [入门指南]。

  • Kind

    curl -sfL https://get.k3s.io | sh -
    kind create cluster
    

    请参考 [Kind 快速入门页面]。

常用 kubectl 命令

基础命令

  • 获取资源信息

    kubectl get <resource>  # 列出资源(例如,Pod、服务、部署)
    kubectl get pods --all-namespaces  # 列出所有命名空间中的 Pod
    kubectl get pods -o wide  # 列出带有更多详细信息的 Pod
    kubectl get pod my-pod -o yaml  # 获取 Pod 的 YAML 配置。
    
  • 描述资源

    kubectl describe <resource>  # 描述资源(例如,节点、Pod)
    kubectl describe nodes my-node
    kubectl describe pods my-pod.
    
  • 创建资源

    kubectl create -f <manifest-file>  # 从 YAML 或 JSON 文件创建资源
    kubectl create configmap <configmap-name> --from-literal=<key>=<value>  # 创建 ConfigMap
    kubectl create secret generic <secret-name> --from-literal=<key>=<value>  # 创建 Secret.
    
  • 删除资源

    kubectl delete <resource> <name>  # 删除资源(例如,Pod、部署)
    kubectl delete pod my-pod
    kubectl delete deployment my-deployment.
    

Pod 管理

  • 定义容器的命令和参数

    apiVersion: v1
    kind: Pod
    metadata:
      name: command-demo
    spec:
      containers:
      - name: command-demo-container
        image: debian
        command: ["printenv"]
        args: ["HOSTNAME", "KUBERNETES_PORT"]
    
    kubectl apply -f <manifest-file>
    kubectl get pods
    kubectl logs command-demo.
    
  • 在 Shell 中运行命令

    apiVersion: v1
    kind: Pod
    metadata:
      name: shell-demo
    spec:
      containers:
      - name: shell-demo-container
        image: debian
        command: ["/bin/sh"]
        args: ["-c", "while true; do echo hello; sleep 10;done"]
    
    kubectl apply -f <manifest-file>
    kubectl get pods
    kubectl logs shell-demo.
    

ConfigMap 和 Secret 管理

  • 创建 ConfigMap

    kubectl create configmap <configmap-name> --from-literal=<key>=<value>
    kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
    
  • 创建 Secret

    kubectl create secret generic <secret-name> --from-literal=<key>=<value>
    kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
    

部署和服务管理

  • 创建部署

    kubectl create deployment <deployment-name> --image=<image-name>
    kubectl create deployment my-deployment --image=nginx:latest.
    
  • 将部署暴露为服务

    kubectl expose deployment <deployment-name> --type=NodePort --port=<port>
    kubectl expose deployment my-deployment --type=NodePort --port=80.
    

命名空间和节点管理

  • 列出命名空间

    kubectl get namespaces
    
  • 创建命名空间

    kubectl create namespace <namespace-name>
    kubectl create namespace my-namespace.
    
  • 列出节点

    kubectl get nodes
    kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
    

监控和调试

  • 查看日志

    kubectl logs <pod-name>
    kubectl logs -f <pod-name>  # 实时跟踪日志。
    
  • 描述事件

    kubectl describe events
    
  • 检查集群信息

    kubectl cluster-info
    kubectl version  # 检查 Kubernetes 版本。
    

高级命令

  • 排序资源

    kubectl get pods --sort-by='.status.containerStatuses.restartCount'
    kubectl get services --sort-by=.metadata.name.
    
  • 过滤资源

    kubectl get pods --field-selector=status.phase=Running
    kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
    
  • 检索特定数据

    kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}'
    kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.
    

有用的链接