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


感谢阅读,祝君暴富!

相关推荐
codelife3216 分钟前
在Docker容器中执行命令
容器
petaexpress14 分钟前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
华为云开源1 小时前
openGemini 社区人才培养计划:助力成长,培养新一代云原生数据库人才
数据库·云原生·开源
m0_741768857 小时前
使用docker的小例子
运维·docker·容器
最新小梦10 小时前
Docker日志管理
运维·docker·容器
ZHOU西口11 小时前
微服务实战系列之玩转Docker(十五)
nginx·docker·微服务·云原生·swarm·docker swarm·dockerui
有你的晚安._11 小时前
pod基本概念
kubernetes
Persistence is gold14 小时前
cassandra指定配置文件的docker启动方法
运维·docker·容器
C语言扫地僧15 小时前
Docker 镜像制作(Dockerfile)
linux·服务器·docker·容器
无名之逆18 小时前
云原生(Cloud Native)
开发语言·c++·算法·云原生·面试·职场和发展·大学期末