kubectl命令

发布时间 2023-09-03 15:16:38作者: physique

kubectl的命令可分为三类:

1.陈述式命令(命令式对象管理) 类似于我们直接在docker 中 docker run 命令
2.陈述式对象配置(命令式对象配置) 类似于类似于 docker-compose.yml
3.声明式对象配置(声明式对象配置)
kubectl命令的语法如下:
kubectl [command] [type] [name] [flags]
comand:指定要对资源执行的操作,例如create、 get、delete
type:指定资源类型,比如deployment、pod、 service
name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数
下面开始列出kubernetes一些经常用到的命令:
1.kubectl get nodes —查询k8s集群节点

2.kubectl get pod —查看所有的pod

3.kubectl describe pod nginx-6867cdf567-ht2bz --查看pod详细内容

4.kubectl cluster-info —查看k8s 集群的信息

5.kubectl version 查看当前k8s 集群的版本


陈述式命令(命令式对象管理)
我们可以通过陈述式命令(命令式对象管理) 对namespace/pod操作;常用的陈述式命令整理如下:
1.命令形式创建一个namespace
kubectl create namespace udiannet-dev

2.查询所有的namespace
kubectl get ns

3.在udiannet-dev的namespace 下运行一个pod
kubectl run pod --image=nginx -n udiannet-dev

4.查看udiannet-dev下的pod,要指定namespace,如果不指定namespace,那么就会去查询默认namespace下面的pod
kubectl get pod -n udiannet-dev

5.查看该pod的详细信息(要制定namespace)
kubectl describe pod pod-864f9875b9-492tz -n udiannet-dev

6.删除该pod(要指定namespace)
kubectl delete pods pod-864f9875b9-492tz -n udiannet-dev

但是我们说此时这样删除pod是没有用的,因为namespace里面会有一个pod控制器Deployment,当namespace里面的pod被删除的时候,pod控制器就会帮忙创建一个新的pod,这就是我们说的kubernetes的自我修复功能。如果要讲pod彻底删除,要怎么操作呢?我们应该通过删除命名空间,则自动会将这些pod删除。
kubectl delete ns udiannet-dev

查看该命名空间下pod 已经没有该pod了


命令式对象配置
命令式对象配置就是使用命令配合配置文件一起来操作k8s资源 类似于我们学习的docker-compose 定义 yml 配置文件 需要对yaml 配置有一定了解。
kubectl create -f udiannet-pod.yml 创建资源
kubectl delete -f udiannet-pod.yml 删除资源
kubectl get-f udiannet-pod.yml
1.创建udiannet-pod.yml

apiVersion: v1
kind: Namespace
metadata:
name: udiannet-dev #指定的Namespace空间名称

---

apiVersion: v1
kind: Pod
metadata:
name: udiannet-nginx-pod #指定pod的名称
namespace: udiannet-dev #指定该pod对应的Namespace
spec:
containers:
- name: udiannet-nginx-container #运行一个nginx容器
image: nginx:1.17.9 #指定镜像的名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上传到服务器端
/usr/local 创建一个 udiannet来演示我们的

cd /usr/local
mkdir udiannet

执行kubectl create -f udiannet-pod.yml

创建成功 自动创建Namespace udiannet-dev和 pod udiannet-nginx-pod
执行 kubectl get ns查看当前容器中的namespace

执行 kubectl get pods -n udiannet-dev查看udiannet-dev namespace里面的pod信息

查看该pod详细信息 kubectl describe pod udiannet-nginx-pod -n udiannet-dev

执行get命令,查看资源 kubectl get -f udiannet-pod.yml

删除delete 命令 kubectl delete -f udiannet-pod.yml

执行 kubectl get ns,udiannet-dev这个namespace就被删掉了


声明式对象配置
声明式对象配置跟命令式对象配置很类似,通过命令apply
kubectl apply -f udiannet-pod1.yml
在创建一个udiannet-pod1.yml

apiVersion: v1
kind: Namespace
metadata:
name: udiannet-dev#指定的Namespace空间名称

---

apiVersion: v1
kind: Pod
metadata:
name: udiannet-nginx-pod #指定pod的名称
namespace: udiannet-dev #指定该pod对应的Namespace
spec:
containers:
- name: udiannet-nginx-container #运行一个nginx容器
image: nginx:1.17.9 #指定镜像的名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
执行:kubectl apply -f udiannet-pod1.yml

查看 pod: kubectl get pods -n udiannet-dev

查看pod 详细信息:kubectl describe pod udiannet-nginx-pod -n udiannet-dev

以上就是kubernetes常用的一些命令!谢谢观看!