k8s常用命令

alias k=kubectl

操作kubeconfig

# 查看context
k config get-contexts
# 切换context
k config use-context contextName
# 使用context访问
k --context=contextName get pod

操作k8s资源

# 设置节点标签
k label node nodeName key=value --overwrite
# 设置节点污点
k taint node nodeName key=value:NoSchedule
# 删除节点污点
k taint node nodeName key=value:NoSchedule-
# 设置节点不可调度
k cordon nodeName
# 更新pod镜像
k set image deploy/deployName containerName=imageName -n yourNamespace
# 设置实例数量
k scale deploy/deployName --replicas=targetReplicas -n yourNamespace
# 驱逐节点上pod
k drain nodeName --ignore-daemonsets
# 查看k8s资源信息,APIVERSION值是apigroup/version格式
k api-resources -owide

containerd

# nerdctl是类似于docker的命令行工具,推荐使用
# 拷贝容器文件到宿主机上
nerdctl cp [容器id]:xxx xxx
# 拷贝宿主机上文件到容器
nerdctl cp xxx [容器id]:xxx
# 删除没有容器关联的镜像
nerdctl image prune --all

# 根据podName查询业务容器
crictl ps | grep [podName]
# 查看业务容器详情
crictl inspect [containerId]
# 查看pause容器列表
ctr -n k8s.io c ls | grep "pause:"
# 查看pause容器详情
ctr -n k8s.io c info [完整containerId]
# 根据podName查找pause容器进程号
podName=[xxx]
for pauseId in $(ctr -n k8s.io c ls | grep "pause:" | awk '{print $1}')
do
    pauseContainerId=`ctr -n k8s.io c info $pauseId | jq --arg pod "$podName" 'select(.Labels."io.kubernetes.pod.name" == $pod)' | jq -r '.ID'`
    if [[ -n ${pauseContainerId} ]]; then
        ctr -n k8s.io task ls | grep ${pauseContainerId} | awk '{print $2}'
    fi
done

 

posted on 2024-05-21 09:17  王景迁  阅读(37)  评论(0编辑  收藏  举报

导航