无法删除所有指定的值_CKA创建及删除pod

查看有多少pod
[root@vms10 ~]# kubectl get pods
No resources found in default namespace.
[root@vms10 ~]#

当前还没有任何的pod,这里列出的是当前命名空间里的pod,如果要列出指定的命名的pod的话,需要用-n来指定命名空间,比如要列出kube-system里的命名空间,则用:

[root@vms10 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-675d8749dd-sq6mn 1/1 Running 0 20m
calico-node-nvj6x 1/1 Running 0 20m
....
[root@vms10 ~]#

如果要列出所有命名空间的pod,需要加上--all-namespaces选项,比如:

[root@vms10 ~]# kubectl get pods  --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
...输出...
kube-system calico-kube-controllers-675d8749dd-sq6mn 1/1 Running 0 22m
kube-system calico-node-nvj6x 1/1 Running 0 22m
...输出...
[root@vms10 ~]#
创建pod

创建pod的时候可以直接用命令行或者yaml文件的方式,命令行的语法如下:

kubectl run 名字  --image=镜像

在这里也可以指定pod的标签,语法为

kubectl run 名字  --image=镜像 --labels=标签=值

下面创建一个名字为pod1的pod,镜像使用nginx:

[root@vms10 ~]# kubectl run pod1 --image=nginx
pod/pod1 created
[root@vms10 ~]#

查看pod:

[root@vms10 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 38s
[root@vms10 ~]#

要查看此pod运行在哪个节点上,则需要加上-o wide

[root@vms10 ~]# kubectl get pods  -o  wide
NAME READY STATUS RESTARTS AGE IP NODE ..
pod1 1/1 Running 0 59s 10.244.14.18 vms12.rhce.cc ...
[root@vms10 ~]#

注:这里因为结果太长,只截取了部分结果。
从这里可以看到pod是在vms12.rhce.cc上运行的,pod的IP是10.244.14.18

删除pod

删除pod的语法是

kubectl delete pod 名字 --force

这里--force是可选的,不过加快删除pod的速度

[root@vms10 ~]# kubectl delete pod pod1
pod "pod1" deleted
[root@vms10 ~]#
[root@vms10 ~]# kubectl get pods
No resources found in default namespace.
[root@vms10 ~]#
生成yaml文件创建pod

更建议使用yaml的方式来创建pod,因为这样可以在yaml文件里指定各种属性,生成yaml文件的命令是:

kubectl run 名字  --image=镜像 --dry-run=client -o yaml > pod.yaml

这里--dry-run=client的意思是 模拟创建pod但并不会真的创建, -o yaml的意思是以yaml文件的格式输出。

创建pod1的yaml文件pod1.yaml:

[root@vms10 ~]# mkdir pod ; cd pod
[root@vms10 pod]#
[root@vms10 pod]# kubectl run pod1 --image=nginx --dry-run=client -o yaml > pod1.yaml
[root@vms10 pod]#
yaml文件的格式

e2ed3420e282ffe400618ad7499bd85e.png
yaml文件里的写法是分级的,子级和父级之间要缩进2个空格(记住不能按tab键),子级的第一个位置可以以”-”开头,这个”-”和父级对齐,如上图箭头指定的位置。下面来看下pod的yaml文件的结构:9ce9d0f653854c73c859e4e15e039e6d.png

kind指的是创建资源的类型,这里是Pod,后面会讲其他资源比如deployment、secret等
apiVersion 指的是此对象对应的apiversion类型,这个是固定的不能随便写。
metadata里指定的是:
name-用于指定pod的名称
labels-用于定义pod的标签
还可以用namespace定义,此pod在哪个命名空间里创建
spec里定义的是pod的设置,包括:
containers用于定义容器,里面常见的选项包括:
- image-创建容器所使用的镜像
name-容器的名字
imagePullPolicy-镜像下载策略有三个值:Always, Never, IfNotPresent
env: 用于指定pod所能用的变量
- name: 变量名
value: 变量的值, 此处值如果是数字的话,需要使用引号引起来
resources-指定资源限制--后面章节会用到
restartPolicy-指定pod的重启策略

这里重点说下containers里的镜像下载策略imagePullPolicy,他的三个值是:
Always  不管本地有没有镜像,都会到网络上去下载(默认值)
Never   只使用本地镜像,如果本地不存在镜像,则报错
IfNotPresent 优先使用本地镜像,如果本地没有才到网络去下载(建议)
这里默认值是Always,假设镜像虽然已经下载了,但有时可能遇到如下问题:
1.本地网络带宽很高,但是创建pod仍然很慢,原因是创建pod时不管本地有没有,优先去下载镜像,但国内访问国外站点速度很慢,所以创建pod会很慢
2.如果worker不能连接互联网,则创建pod时直接报错,因为根本下载不了,也不会使用本地镜像
所以建议大家把镜像策略改成imagePullPolicy: IfNotPresent,如下图:

[root@vms10 pod]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1 #这里pod标签设置为run=pod1
name: pod1 #pod名为pod1
spec:
containers:
- image: nginx #pod所使用的镜像
imagePullPolicy: IfNotPresent
name: pod1 #这个是容器名
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@vms10 pod]#

注意:这里镜像下载策略,可以在命令行里指定

kubectl run 名字 --image=镜像 --image-pull-policy=镜像下载策略

yaml文件里需要的字段都可以通过”kubectl explain 资源类型.一级.二级” 来查看,比如查看pod的yaml里定义容器里哪些属性可以写,可以用kubectl explain pods.spec.containers
来进行查询。
通过此yaml文件创建pod的语法为

kubectl apply -f yaml文件

如果要指定命名空间则用 kubectl apply -f yaml -n 命名空间

创建pod:

[root@vms10 pod]# kubectl apply -f pod1.yaml
pod/pod1 created
[root@vms10 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 2s
[root@vms10 pod]#

此pod里运行的进程是由镜像CMD里指定,创建pod时我们也可以指定pod运行其他进程,可以用如下命令:

kubectl run 名字  --image=镜像 --dry-run=client -o yaml  --  “命令” > pod.yaml
或者
kubectl run 名字 --image=镜像 --dry-run=client -o yaml -- sh -c “命令” > pod.yaml

这两种都可以,注意:

  1. -- 两边要有空格

  2. --dry-run=client -o yaml 写在 -- 前面 ,命令写在 -- 右边 ,不要写错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值