一文学会K8S命令行

一、准备阶段

1. 安装kubectl:

从Kubernetes官方网站下载适用于你操作系统的kubectl版本。
安装并配置kubectl,确保它可以访问你的Kubernetes集群。

  1. 使用curl工具下载并安装
  • 下载最新版本的kubectl:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  • 或者,下载指定版本的kubectl(例如v1.26.0):
curl -LO https://dl.k8s.io/release/v1.26.0/bin/linux/amd64/kubectl
  • 赋予执行权限并移动到/usr/local/bin目录:
chmod +x ./kubectl  
mv ./kubectl /usr/local/bin/
  1. 使用包管理工具安装
  • 对于Debian/Ubuntu系统:
sudo apt-get update  
sudo apt-get install -y ca-certificates curl apt-transport-https  
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg  
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list  
sudo apt-get update  
sudo apt-get install -y kubectl
  • 对于Red Hat/CentOS系统:
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo  
[kubernetes]  
name=Kubernetes  
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch  
enabled=1  
gpgcheck=1  
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg  
EOF  
sudo yum install -y kubectl

2. 配置kubeconfig:

kubeconfig文件通常位于~/.kube/config,它包含了访问Kubernetes集群所需的配置信息。
如果你有多个集群或上下文,可以使用kubectl config命令来切换。
可以使用kubectl config命令来生成和修改kubeconfig配置文件。以下是一个基本的配置流程:

  1. 设置集群信息:
kubectl config set-cluster <cluster-name> \  
    --server=<api-server-address> \  
    --certificate-authority=<ca-certificate-path>
  • <cluster-name>:集群的名称。
  • <api-server-address>:Kubernetes API服务器的地址。
  • <ca-certificate-path>:CA证书的路径。
  1. 设置用户信息:
kubectl config set-credentials <user-name> \  
    --client-certificate=<client-certificate-path> \  
    --client-key=<client-key-path> 

或者,如果使用token进行认证,可以使用以下命令:

kubectl config set-credentials <user-name> \  
    --token=<token>
  • <user-name>:用户的名称。
  • <client-certificate-path>:客户端证书的路径。
  • <client-key-path>:客户端密钥的路径。
  • <token>:用于认证的token。
  1. 设置上下文信息:
    上下文定义了kubectl与哪个集群、哪个用户交互,以及默认使用哪个命名空间。可以使用以下命令设置上下文:
kubectl config set-context <context-name> \  
    --cluster=<cluster-name> \  
    --user=<user-name> \  
    --namespace=<namespace>
  • <context-name>:上下文的名称。
  • <cluster-name>:与上下文关联的集群名称。
  • <user-name>:与上下文关联的用户名称。
  • <namespace>:与上下文关联的默认命名空间。
  1. 设置当前使用的上下文:
kubectl config use-context <context-name>

这将使kubectl在当前会话中使用指定的上下文。
5. kubeconfig的常用命令

  • 查看当前配置文件:
kubectl config view
  • 切换上下文:
kubectl config use-context <context-name>
  • 查看当前使用的上下文:
kubectl config current-context
  • 列出所有上下文:
kubectl config get-contexts
  • 删除上下文:
kubectl config delete-context <context-name>

二、核心命令概览

  1. 查看集群信息:
  • kubectl cluster-info:显示集群的核心服务信息。
  • kubectl get nodes:列出集群中的所有节点。
  • kubectl get componentstatuseskubectl get cs:查看集群组件的状态。
  • kubectl get namespaces:查看集群命名空间
  • kubectl get all -n <namespace>:查看特定命名空间下的所有资源
  • kubectl get pods --all-namespaces:查看集群中所有的 Pod
  • kubectl version:查看集群版本信息
  • kubectl config view:查看集群配置信息
  • kubectl describe <resource> <resource-name> -n <namespace>:描述特定资源
  • kubectl top nodes:查看集群资源使用情况
  • kubectl logs <pod-name> -n <namespace>:查看集群日志
  1. 管理命名空间:
  • kubectl get namespaceskubectl get ns:列出所有命名空间。
  • kubectl create namespace <namespace-name>:创建一个新的命名空间。
  • kubectl delete namespace <namespace-name>:删除一个命名空间。
  1. 管理Pod:
  • kubectl get pods:列出当前命名空间中的所有Pod。
  • kubectl describe pod <pod-name>:显示指定Pod的详细信息。
  • kubectl delete pod <pod-name>:删除指定的Pod。
  • kubectl exec -it <pod-name> -- /bin/bash:进入Pod中的容器进行交互。
  • kubectl logs <pod-name>:打印Pod中容器的日志。
  • kubectl get pod <pod-name> -o yaml 或 kubectl get pod <pod-name> -o json:以 YAML 或 JSON 格式查看 Pod 的详细信息
  • kubectl run <pod-name> --image=<image-name>:通过命令行直接创建 Pod
  • kubectl apply -f <file-name>.yaml:通过 YAML 配置文件创建 Pod
  1. 管理Deployment:
  • kubectl get deployments:列出当前命名空间中的所有Deployment。
  • kubectl create deployment <deployment-name> --image=<image>:创建一个新的Deployment。
  • kubectl apply -f nginx-deployment.yaml:通过 YAML 配置文件创建
  • kubectl scale deployment <deployment-name> --replicas=<number>:调整Deployment中的5. Pod数量。
  • kubectl delete deployment <deployment-name>:删除一个Deployment。
  • kubectl describe deployment nginx-deployment:查看特定 Deployment 的详细信息
  • kubectl set image deployment/nginx-deployment nginx=nginx:1.20.2:修改 Deployment 的配置
  • kubectl delete deployment nginx-deployment:删除 Deployment
  • kubectl rollout history deployment nginx-deployment:查看 Deployment 的历史版本
  • kubectl rollout undo deployment nginx-deployment:回滚 Deployment
  1. 管理Service:
  • kubectl get services:列出当前命名空间中的所有Service。
  • kubectl expose deployment <deployment-name> --type=<type> --port=<port>:为Deployment创建一个Service。<type>可以是ClusterIP、NodePort或LoadBalancer。
  • kubectl describe service nginx-service:查看特定 Service 的详细信息
  • kubectl patch service nginx-service -p '{"spec":{"ports":[{"port":8080}]}}':修改 Service 的配置
  • kubectl delete service nginx-service:删除 Service
  • kubectl get endpoints nginx-service:查看 Service 的 Endpoints
  1. 查看资源使用情况:
  • kubectl top nodes:查看节点的资源使用情况。
  • kubectl top pods:查看Pod的资源使用情况。
  1. 污点
  • kubectl taint nodes node1 app=backend:NoSchedule: 给节点打污点
  • kubectl describe node node1 | grep Taints:查看节点污点
  • kubectl taint nodes node1 app=backend:NoSchedule:删除节点污点
    三、高级功能和技巧
  1. 命令自动补全:
  • 对于Bash用户,可以通过配置.bashrc文件来启用kubectl的自动补全功能。
  • 对于ZSH用户,可以配置.zshrc文件。
  1. 使用别名:
  • 可以为常用的kubectl命令设置别名,以提高效率。
  1. 结合YAML文件:
  • 使用YAML文件来定义Kubernetes资源,然后通过kubectl apply -f <file.yaml>来创建或更新这些资源。
  1. 查看资源详细信息:
  • 使用kubectl describe命令可以查看资源的详细信息,包括事件、状态、配置等。
  1. 日志和监控:
  • 使用kubectl logs命令查看Pod的日志。
  • 可以结合Kubernetes的监控工具(如Prometheus、Grafana)来监控集群的状态和性能。

猜你喜欢

转载自blog.csdn.net/mqiqe/article/details/143117418