k8s常用命令 k8s命令 - kubectl常用命令 kubectl命令 含命令补全 kubectl实用命令 yaml模板 yml模板 dry-run命令

# kubectl补全

source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

# oc补全

source /usr/share/bash-completion/bash_completion
source <(oc completion bash)
echo "source <(oc completion bash)" >> ~/.bashrc

一 日常运维命令

#   kubectl  生成yaml 客户端 模板 棒

kubectl create deployment dep-busybox --image=busybox --dry-run=client --output=yaml

#  资源导出yaml

kubectl -n monitoring get alertmanager -oyaml > alertmanager.yaml

二 二进制安装

# 这里的工具很全 啥都有
# wget https://dl.k8s.io/v1.23.2/kubernetes-server-linux-amd64.tar.gz # 1.23.2 换成自己的版本号

# 这个是单独的kubectl工具下载   1.23.2 是版本号
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.23.2/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
kubectl config view

kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。

kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能。这里不再罗列各种子命令的格式,而是介绍下如何查询命令的帮助

kubectl -h 查看子命令列表
kubectl options 查看全局选项
kubectl <command> --help 查看子命令的帮助
kubectl [command] [PARAMS] -o=<format> 设置输出格式(如 json、yaml、jsonpath 等)
kubectl explain [RESOURCE] 查看资源的定义
配置
使用 kubectl 的第一步是配置 Kubernetes 集群以及认证方式,包括

cluster 信息:Kubernetes server 地址
用户信息:用户名、密码或密钥
Context:cluster、用户信息以及 Namespace 的组合
 

# 三 常用实用复杂查询 和 管理命令

# ————————————————
原文链接:https://blog.csdn.net/as_dingjia/article/details/120364679

推荐文章2:Kubectl常用命令详解_kubectl命令_帅大大的架构之路的博客-CSDN博客

kubectl get pods --all-namespaces -o custom-columns=NS:.metadata.namespace,NAME:.metadata.name,"CPU(requests)":.spec.containers[*].resources.requests.cpu,"CPU(limits)":.spec.containers[*].resources.limits.cpu,"MEMORY(requests)":.spec.containers[*].resources.requests.memory,"MEMORY(limits)":.spec.containers[*].resources.limits.memory

#  管理命令

kubectl config set-credentials myself --username=admin --password=secret
kubectl config set-cluster local-server --server=http://localhost:8080
kubectl config set-context default-context --cluster=local-server --user=myself --namespace=default
kubectl config use-context default-context
kubectl config view

# 日常运维命令

创建:kubectl run <name> --image=<image> 或者 kubectl create -f manifest.yaml
查询:kubectl get <resource>
更新 kubectl set 或者 kubectl patch
删除:kubectl delete <resource> <name> 或者 kubectl delete -f manifest.yaml
查询 Pod IP:kubectl get pod <pod-name> -o jsonpath='{.status.podIP}'
容器内执行命令:kubectl exec -ti <pod-name> sh
容器日志:kubectl logs [-f] <pod-name>
导出服务:kubectl expose deploy <name> --port=80
Base64 解码:
kubectl get secret SECRET -o go-template='{{ .data.KEY | base64decode }}'
# 查看所有 pod 列表,  -n 后跟 namespace, 查看指定的命名空间
kubectl get pod
kubectl get pod -n kube  
kubectl get pod -o wide


# 查看 RC 和 service 列表, -o wide 查看详细信息
kubectl get rc,svc
kubectl get pod,svc -o wide  
kubectl get pod <pod-name> -o yaml


# 显示 Node 的详细信息
kubectl describe node 192.168.0.212


# 显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志
kubectl describe pod <pod-name>
eg:
kubectl describe pod redis-master-tqds9


# 根据 yaml 创建资源, apply 可以重复执行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml


# 基于 pod.yaml 定义的名称删除 pod 
kubectl delete -f pod.yaml 


# 删除所有包含某个 label 的pod 和 service
kubectl delete pod,svc -l name=<label-name>


# 删除所有 Pod
kubectl delete pod --all


# 查看 endpoint 列表
kubectl get endpoints


# 执行 pod 的 date 命令
kubectl exec <pod-name> -- date
kubectl exec <pod-name> -- bash
kubectl exec <pod-name> -- ping 10.24.51.9


# 通过bash获得 pod 中某个容器的TTY,相当于登录容器
kubectl exec -it <pod-name> -c <container-name> -- bash
eg:
kubectl exec -it redis-master-cln81 -- bash


# 查看容器的日志
kubectl logs <pod-name>
kubectl logs -f <pod-name> # 实时查看日志
kubectl log  <pod-name>  -c <container_name> # 若 pod 只有一个容器,可以不加 -c 

kubectl logs -l app=frontend # 返回所有标记为 app=frontend 的 pod 的合并日志。


# 查看注释
kubectl explain pod
kubectl explain pod.apiVersion

# 查看节点 labels
kubectl get node --show-labels

# 重启 pod
kubectl get pod <POD名称> -n <NAMESPACE名称> -o yaml | kubectl replace --force -f -

# 修改网络类型
kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'

# 伸缩 pod 副本
# 可用于将Deployment及其Pod缩小为零个副本,实际上杀死了所有副本。当您将其缩放回1/1时,将创建一个新的Pod,重新启动您的应用程序。
kubectl scale deploy/nginx-1 --replicas=0
kubectl scale deploy/nginx-1 --replicas=1

# 查看前一个 pod 的日志,logs -p 选项 
kubectl logs --tail 100 -p user-klvchen-v1.0-6f67dcc46b-5b4qb > pre.log

#删除一个node节点 kubeadm-4.novalocal
kubectl drain kubeadm-4.novalocal  --delete-local-data --force --ignore-daemonsets
kubectl delete node kubeadm-4.novalocal 

#  命令补全

# 命令补全
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

# hi-ins笔记仓库 k8s常用命令-应该更全

# 一 基础命令
# 查看帮助
kubectl explain pod
kubectl explain pod.apiVersion

# 查看所有 pod 列表,  -n 后跟 namespace, 查看指定的命名空间 -o wide是详情
kubectl get pod
kubectl get pod -n kube  
kubectl get pod -o wide
 
# 查看 RC 和 service 列表, -o wide 查看详细信息
kubectl get rc,svc
kubectl get pod,svc -o wide  
kubectl get pod <pod-name> -o yaml
 
# 显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志
kubectl describe pod <pod-name>
eg:
kubectl describe pod redis-master-tqds9
 
# 根据 yaml 创建资源, apply 可以重复执行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml
 
# 基于 pod.yaml 定义的名称删除 pod 
kubectl delete -f pod.yaml 
 
# 删除所有包含某个 label 的pod 和 service
kubectl delete pod,svc -l name=<label-name>
 
# 删除所有 Pod
kubectl delete pod --all
 
# 查看 endpoint 列表
kubectl get endpoints
 
# 执行 pod 的 date 命令
kubectl exec <pod-name> -- date
kubectl exec <pod-name> -- bash
kubectl exec <pod-name> -- ping 10.24.51.9
 
# 通过bash获得 pod 中某个容器的TTY,相当于登录容器
kubectl exec -it <pod-name> -c <container-name> -- bash
eg:
kubectl exec -it redis-master-cln81 -- bash
 
# 查看容器的日志
kubectl logs <pod-name>
kubectl logs -f <pod-name> # 实时查看日志
kubectl log  <pod-name>  -c <container_name> # 若 pod 只有一个容器,可以不加 -c 
kubectl logs -l app=frontend # 返回所有标记为 app=frontend 的 pod 的合并日志。
 

# 重启 pod
kubectl get pod <POD名称> -n <NAMESPACE名称> -o yaml | kubectl replace --force -f -
# 修改网络类型
kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}'
# 伸缩 pod 副本
# 可用于将Deployment及其Pod缩小为零个副本,实际上杀死了所有副本。当您将其缩放回1/1时,将创建一个新的Pod,重新启动您的应用程序。
kubectl scale deploy/nginx-1 --replicas=0
kubectl scale deploy/nginx-1 --replicas=1

# 快速测试
kubectl create deployment nginx-demo --image=nginx
kubectl expose deployment nginx-demo --port=80 --type=NodePort
kubectl get all # 默认namespace -n default
kubectl scale deployment nginx-demo --replicas=2


# 查看前一个 pod 的日志,logs -p 选项 
kubectl logs --tail 100 -p user-klvchen-v1.0-6f67dcc46b-5b4qb > pre.log

# 1.pod若处于运行状态,则通过kubectl logs 即可
# 查看指定pod的日志
kubectl logs <pod_name>
kubectl logs -f <pod_name> #类似tail -f的方式查看(tail -f 实时查看日志文件 tail -f 日志文件log)

# 查看指定pod中指定容器的日志
kubectl logs <pod_name> -c <container_name>

kubectl logs pod_name -c container_name -n namespace (一次性查看)
kubectl logs -f <pod_name> -n namespace (tail -f方式实时查看)

# 2.若pod处于init状态,则需要通过docker ps查看
#获取对应的pod name
kubectl get pods -n  namespace -o wide (STATUS是init的pod_name)

#通过docker ps 获取该pod的中的CONTAINER ID
docker ps | grep pod_name

#通过docker log获取对应的日志信息
docker logs CONTAINER_ID


# 显示 Node 的详细信息
kubectl describe node 192.168.0.212
# 查看node节点 labels
kubectl get node --show-labels
#删除一个node节点 kubeadm-4.novalocal
kubectl drain kubeadm-4.novalocal  --delete-local-data --force --ignore-daemonsets
kubectl delete node kubeadm-4.novalocal 

# 二 控制器相关

# deployment相关命令
kubectl set image deploy/nginx nginx=nginx:1.7.9 --record
kubectl set image deploy/nginx nginx=nginx --record
kubectl rollout status deploy nginx #查看升级状态
kubectl rollout pause deployment nginx #升级暂停
kubectl rollout resume deployment nginx #恢复升级
kubectl describe deploy nginx #查看升级详情
kubectl rollout history deploy/nginx #查看升级历史
# deployment.extensions/nginx
# REVISION CHANGE-CAUSE
kubectl set image deploy/nginx nginx=nginx:1.7.9 --record=true
kubectl set image deploy/nginx nginx=nginx --record=true
kubectl rollout history deployment nginx --revision=5
kubectl rollout undo deployment/nginx --to-revision=4 #回滚到指定版本
kubectl rollout undo deployment nginx-deploy #回滚到前一个版本

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值