Kubernetes 快速参考指南
一些常用的带参数的 k8s 命令
目录
这是我关于k8s 命令速查表,涵盖了 Kubernetes 最重要的命令和概念,从安装到运行容器以及清理:
Kubernetes 安装
使用 Kubeadm
使用 kubeadm
安装 Kubernetes 的步骤如下:
-
准备环境:
- 确保启用必要的内核模块:
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
- 重启系统以应用更改。
- 确保启用必要的内核模块:
-
安装 Docker 和其他依赖项:
- 安装 Docker:
sudo apt-get update sudo apt-get install -y docker.io
- 安装
ebtables
和ethtool
:sudo apt-get install ebtables ethtool
- 安装 HTTPS 支持和
curl
(如需要):sudo apt-get update sudo apt-get install -y apt-transport-https curl
- 添加 Kubernetes 仓库并安装
kubeadm
、kubelet
和kubectl
: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
- 安装 Docker:
-
初始化 Kubernetes 集群:
- 初始化第一个控制平面节点:
sudo kubeadm init
- 加入其他控制平面节点和工作节点:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- 初始化第一个控制平面节点:
使用 Minikube 或 Kind
对于本地开发,可以使用 minikube
或 kind
:
-
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"}}'.