k8s对资源的管理方式

一、描述

k8s一般在对对象进行管理的时候,一般又三种常见操作,分别为命令式对象管理、命令式对象配置、申明式对象配置。

命令式对象管理操作简单,操作的是对象,但是不方便审计,

kubectl   run  nginx-pod --image=nginx:1.17.1  --port=80

命令式对象配置,简单说就是把命令式管理的一些参数写到一个配置文件里,可以审计,一般操作的对象是文件,但是如果项目很大时,配置文件多,操作麻烦;

kubectl   create/delete/patch  -f  nginx-pod.yaml

申明式对象配置,只能用于创建和更新资源,不对进行其它操作,可以对目录操作,比如把很多个yaml文件放到一个目录里,进行全部操作,很方便,如果出现错误难以排查

kubectl  apply -f nginx-pod.yaml

二、命令式对象管理

kubectl是kubernetes集群的命令行工具,通过它能对集群本身进行管理,并能够在集群上对容器化应用的安装部署,一般语法如下

kubectl   [command]   [type]    [name]  [flags]

command:指定要对资源执行的操作,如create、get 、 delete 等

type:指定资源类型,如pod、service、deployment

name:指定资源的名称,大小写敏感

flags:指定额外的可选参数

command的常用命令如下:

 type:资源类型

除了有pod、service、deployment其实还有很多,可以通过kubectl api-resources查看

常用的资源有如下资源

 

 

 实操:

1、运行一个名为nginx-dev的pod的nginx,版本是1.17.1

[root@master ~]# kubectl run nginx-dev --image=nginx:1.17.1 --port=80
pod/nginx-dev created

2、查询所有的pod

[root@master ~]# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-vpkgt    1/1     Running   0          4m39s
nginx-dev                 1/1     Running   0          2m46s
nginx-pod                 1/1     Running   0          10m
tomcat-6fb574f6dd-dmjkp   1/1     Running   0          3h36m

3、查询指定的pod

[root@master ~]# kubectl  get pod nginx-dev
NAME        READY   STATUS    RESTARTS   AGE
nginx-dev   1/1     Running   0          3m36s

4、创建一个namespaces

[root@master ~]# kubectl create ns test
namespace/test created

5、查询一个指定名字的namespaces

[root@master ~]# kubectl  get ns  test 
NAME   STATUS   AGE
test   Active   84s

6、指定一个pod运行在namespaces为test下

[root@master ~]# kubectl run nginx-1 --image=nginx:1.17.1 --port=80  -n test
pod/nginx-1 created
[root@master ~]# 
[root@master ~]# 
[root@master ~]# 
[root@master ~]# kubectl  get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-vpkgt    1/1     Running   0          15m
nginx-dev                 1/1     Running   0          13m
nginx-pod                 1/1     Running   0          20m
tomcat-6fb574f6dd-dmjkp   1/1     Running   0          3h47m
[root@master ~]# 
[root@master ~]# 
[root@master ~]# kubectl  get pod  -n  test
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          82s


默认查询是只显示default的namespaces下的pod,要显示指定的namespaces 需要加上-n参数

7、删除一个pod

[root@master ~]# kubectl  get pod  -n  dev
No resources found in dev namespace.
[root@master ~]# 
[root@master ~]# kubectl  get pod  -n test
NAME      READY   STATUS    RESTARTS   AGE
nginx-1   1/1     Running   0          7m56s
[root@master ~]# 
[root@master ~]# kubectl delete pod nginx-1
Error from server (NotFound): pods "nginx-1" not found
[root@master ~]# 
[root@master ~]# kubectl delete pod nginx-1 -n test
pod "nginx-1" deleted


默认删除的是default的namespaces下的pod   需要用-n参数指定pod所在的namespaces

 三、命令式对象配置

命令是对象配置只是把一些参数写到了配置文件中,下面来写一个nginx的yaml文件

[root@master ~]# cat nginx-pod-123.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: dev


---
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod-123
  namespace: dev
spec:
  containers:
  - name: nginx-containers
    image: nginx:1.17.1

 指定yaml文件创建pod

[root@master ~]# kubectl   create -f nginx-pod-123.yaml 
namespace/dev created
pod/nginx-pod-123 created
[root@master ~]# 
[root@master ~]# kubectl  get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-7cbb8cd5d8-vpkgt    1/1     Running   0          36m
nginx-pod                 1/1     Running   0          41m
tomcat-6fb574f6dd-dmjkp   1/1     Running   0          4h7m
[root@master ~]# 
[root@master ~]# kubectl  get pod -n dev
NAME            READY   STATUS    RESTARTS   AGE
nginx-pod-123   1/1     Running   0          25s

四、声明式对象配置

声明式对象配置和前面的命令式对象配置差不多,只是yaml文件有变化才更新,没有变化就不更新

[root@master ~]# kubectl  apply -f nginx-pod-123.yaml 
namespace/dev unchanged
pod/nginx-pod-123 configured
[root@master ~]# 
[root@master ~]# kubectl  apply -f nginx-pod-123.yaml 
namespace/dev unchanged
pod/nginx-pod-123 unchanged

  

 

posted @ 2021-12-23 14:48  凉生墨客  阅读(299)  评论(0编辑  收藏  举报