赞
踩
在kubernetes中,命名空间被用来隔离资源。比如配置字典,内部路由等,每个命名空间只能使用其下的。
kubectl get ns
ns是namespace的缩写。
创建一个hello的命名空间。
kubectl create ns hello
apiVersion: v1
kind: Namespace
metadata:
name: hello
kubectl apply -f hello.yaml
kubectl delete ns hello
kubectl delete -f hello.yaml
这里需要说明的是系统默认的命名空间无法删除。包括default。并且删除命名空间会将该空间下部署的所有资源连带删除,谨慎操作。
pod是运行中的一组容器,是kubernetes中应用的最小单位。
kubectl get pod -A
此命令默认情况下是查看所有的pod。如果我们想看指定命名空间下的pod,可以使用kubectl get pod -n 空间名称
,不加参数,查看默认名称空间。
创建一个名称为mynginx的pod,使用的镜像为nginx。
kubectl run mynginx --image=nginx
[root@k8s-master ~]# kubectl get pod [mynginx]
NAME READY STATUS RESTARTS AGE
mynginx 1/1 Running 0 80s
[root@k8s-master ~]#
说明:NAME表示pod名称。READY表示就绪的容器数量以及总容器数量。STATUS表示状态。RESTARTS表示重启次数。AGE表示创建时长。
apiVersion: v1
kind: Pod
metadata:
name: mynginx
namespace: default
spec:
containers:
- image: nginx
name: mynginx
[root@k8s-master ~]# kubectl describe pod [mynginx]
......
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m54s default-scheduler Successfully assigned default/mynginx to k8s-worker2
Normal Pulling 4m53s kubelet Pulling image "nginx"
Normal Pulled 3m49s kubelet Successfully pulled image "nginx" in 1m4.144467081s
Normal Created 3m48s kubelet Created container mynginx
Normal Started 3m48s kubelet Started container mynginx
[root@k8s-master ~]#
主要看事件部分。包括被分配的节点信息等。我们发现在k8s-worker2
节点创建了pod,所以通过docker ps | grep mynginx
查看的时候只有在worker2节点才可看到。
[root@k8s-master ~]# kubectl logs [mynginx]
...
2022/06/27 15:18:45 [notice] 1#1: start worker process 32
2022/06/27 15:18:45 [notice] 1#1: start worker process 33
[root@k8s-master ~]#
[root@k8s-master ~]# kubectl get pod -owide [mynginx]
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mynginx 1/1 Running 0 4m6s 192.168.126.8 k8s-worker2 <none> <none>
[root@k8s-master ~]#
集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod,curl 192.168.126.8:[80]
。
[root@k8s-master ~]# kubectl exec -it [mynginx] -c [mynginx] -- /bin/bash
root@mynginx:/# ls
bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint.d etc lib media opt root sbin sys usr
root@mynginx:/#
注意,如果是多容器的pod,我们可以加上参数-c 容器名称
即可进入指定的容器内。
kubectl delete pod [mynginx]
kubectl delete -f nginx.yml
重点说明:pod是kubernetes中应用的最小单位。在同一个pod内的容器可以直接使用127.0.0.1:端口
的方式访问,但是要注意,端口不能重复。
本文由mdnice多平台发布
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。