K8S常用kubectl命令汇总(持续更新中)

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • [1. 命名空间namespace相关](#1. 命名空间namespace相关)
    • [1.1 创建命名空间](#1.1 创建命名空间)
    • [1.2 查询命名空间](#1.2 查询命名空间)
  • [2. 节点node相关](#2. 节点node相关)
    • [2.1 查看集群节点](#2.1 查看集群节点)
    • [2.2 查看节点健康状态](#2.2 查看节点健康状态)
  • [3. 容器pod相关](#3. 容器pod相关)
    • [3.1 查看pods](#3.1 查看pods)
    • [3.2 删除pod](#3.2 删除pod)
    • [3.3 查看pod详细信息](#3.3 查看pod详细信息)
    • [3.4 查看pod描述信息](#3.4 查看pod描述信息)
    • [3.5 查看deployment的日志信息](#3.5 查看deployment的日志信息)
    • [3.6 查看问题pod](#3.6 查看问题pod)
    • [3.7 进入pod](#3.7 进入pod)
    • [3.8 退出pod](#3.8 退出pod)
  • [4. 持久化存储pvc相关](#4. 持久化存储pvc相关)
    • [4.1 查看pvc](#4.1 查看pvc)
    • [4.2 删除pvc](#4.2 删除pvc)
  • [5. 服务svc相关](#5. 服务svc相关)
    • [5.1 查看svc](#5.1 查看svc)
    • [5.2 删除svc](#5.2 删除svc)
  • [6. 查看全部服务](#6. 查看全部服务)
  • [7. 部署服务](#7. 部署服务)
    • [7.1 部署所有yml文件](#7.1 部署所有yml文件)
    • [7.2 部署某个yml文件](#7.2 部署某个yml文件)
  • [8. 初始化集群主节点命令](#8. 初始化集群主节点命令)
    • [8.1 配置镜像列表](#8.1 配置镜像列表)
    • [8.2 拉取镜像](#8.2 拉取镜像)
    • [8.3 初始化kubeadm](#8.3 初始化kubeadm)
    • [8.4 其他节点加入集群](#8.4 其他节点加入集群)
    • [8.5 生成join命令](#8.5 生成join命令)
    • [8.6 重置kubeadm](#8.6 重置kubeadm)
      • [8.6.1 重置kubeadm](#8.6.1 重置kubeadm)
      • [8.6.2 移除文件](#8.6.2 移除文件)

命令中使用到的一些自定义参数表示的含义如下

namespacename 命名空间名称

podname pod的名称

selectorname 指yaml中定义的selector参数的值

pvcname 表示pvc的名称

deploymentname 表示deployment的名称

svcname 表示service的名称

1. 命名空间namespace相关

1.1 创建命名空间

l 复制代码
kubectl create namespace namespacename

如创建一个名为ns-sb的命名空间

l 复制代码
kubectl create namespace ns-sb

1.2 查询命名空间

查看全部命名空间

l 复制代码
kubectl get namespace -A

2. 节点node相关

2.1 查看集群节点

l 复制代码
kubectl get nodes

2.2 查看节点健康状态

l 复制代码
kubectl get cs

3. 容器pod相关

3.1 查看pods

查看所有pod

l 复制代码
kubectl get pod -A

查看指定命名空间中的pod

l 复制代码
kubectl get pods -n namespacename

如查看命名空间为ns-sb的所有pod

l 复制代码
kubectl get pods -n ns-sb

3.2 删除pod

未设置副本数或者副本数设为0则可用常规删除命令

l 复制代码
kubectl delete pod podname -n namespacename

若设置副本数大于等于1时,则需要删除deployment

l 复制代码
kubectl delete deployment name -n namespacename

3.3 查看pod详细信息

查看pod的名称、状态、所在集群的ip、所在节点等信息

l 复制代码
kubectl get pod -o wide -n namespacename

3.4 查看pod描述信息

查看所有pod的详细信息(包含日志信息)

l 复制代码
kubectl describe pod -n namespacename

查看指定pod的详细信息(包含日志信息)

l 复制代码
kubectl describe pod podname -n namespacename

3.5 查看deployment的日志信息

查看deployment的日志

l 复制代码
kubectl logs deploymentname -n namespacename

3.6 查看问题pod

查看有问题的pod

l 复制代码
kubectl get pods -l selectorname -n namespacename

注:selectorname 指yaml中定义的selector参数的值

3.7 进入pod

进入pod

l 复制代码
kubectl exec -it podname -n namespacename -- /bin/bash

3.8 退出pod

退出pod

l 复制代码
exit

4. 持久化存储pvc相关

4.1 查看pvc

查看全部pvc

l 复制代码
kubectl get pvc -A

查看指定命名空间的pvc

l 复制代码
kbuectl get pvc -n namespacename

4.2 删除pvc

l 复制代码
kubectl delete pvc pvcname -n namespacename

5. 服务svc相关

即查看service

svc是service的缩写,两者都可用

5.1 查看svc

查看全部svc

l 复制代码
kubectl get svc -A

查看指定命名空间的svc

l 复制代码
kubectl get svc -n namespacename

5.2 删除svc

l 复制代码
kubectl delete svc svcname -n namespacename

6. 查看全部服务

查看全部服务,包含可选pvc、deploy、pod、svc等,也可全选,如下

l 复制代码
kubectl get pvc,deploy,pod,svc -A

7. 部署服务

7.1 部署所有yml文件

部署所有yml文件

l 复制代码
kubectl apply -f .

7.2 部署某个yml文件

如部署当前文件夹gitlab-yaml下的redis.yml文件

l 复制代码
kubectl apply -f ./gitlab-yaml/redis.yml

以下为拓展

8. 初始化集群主节点命令

初始化使用的是kubeadm命令

8.1 配置镜像列表

l 复制代码
kubeadm config images list

指定版本

l 复制代码
kubeadm config images list --kubernetes-version v1.23.0

8.2 拉取镜像

l 复制代码
kubeadm config images pull  --image-repository registry.aliyuncs.com/google_containers

8.3 初始化kubeadm

l 复制代码
kubeadm init \
  --apiserver-advertise-address=172.30.0.224 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all

--apiserver-advertise-address 集群通告地址(master 机器IP,这里用的万兆网)
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虚拟网络,Pod统一访问入口,可以不用更改,直接用上面的参数
--pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致,可以不用更改,直接用上面的参数

8.4 其他节点加入集群

加入集群节点的命令(包含token)在初始化完成时输出的内容中,复制保存使用即可

l 复制代码
kubeadm join 172.30.0.224:6443 --token 4uhwg7.ldccrwsxmplqahbc \
        --discovery-token-ca-cert-hash sha256:cf6e896414b3d3169774b38f435d7789a1466c83064c173fc56537ba7e949e81

8.5 生成join命令

如果token过期或忘记加入集群的命令,使用以下命令生成新的加入集群命令(包含token)

l 复制代码
kubeadm token create --print-join-command

8.6 重置kubeadm

如果初始化失败,或者需要重新初始化,可执行以下两个命令

8.6.1 重置kubeadm

l 复制代码
kubeadm reset

8.6.2 移除文件

移除相关文件,不然会重置失败

l 复制代码
sudo rm -fr ~/.kube/  /etc/kubernetes/* var/lib/etcd/*

代理访问dashboard

使用该命令可以将dashboard的服务定位到本机的8001端口

l 复制代码
kubectl proxy

会输出Starting to serve on 127.0.0.1:8001

然后访问代理地址
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

查看访问权限

l 复制代码
kubectl auth can-i create deployments --namespace=kubernetes-dashboard

输出yes表示当前用户有权限创建deployments的权限,如果是no则表示没有权限

删除pod


感谢阅读,祝君暴富!

相关推荐
老司机张师傅4 分钟前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
登云时刻1 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(一)
redis·kubernetes·bootstrap
运维&陈同学1 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
Code_Artist4 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
Eternal-Student4 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
码农小丘4 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
灼烧的疯狂6 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
wenyue11217 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
梅见十柒9 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生