命名空间

在kubernetes中,命名空间被用来隔离资源。比如配置字典,内部路由等,每个命名空间只能使用其下的。

  1. 查看命名空间
kubectl get ns

ns是namespace的缩写。

  1. 创建命名空间

创建一个hello的命名空间。

  • 命令行方式
kubectl create ns hello
  • yaml方式,hello.yaml
apiVersion: v1kind: Namespacemetadata:name: hello 
kubectl apply -f hello.yaml
  1. 删除命名空间
  • 命令行方式
kubectl delete ns hello
  • yaml方式
kubectl delete -f hello.yaml

这里需要说明的是系统默认的命名空间无法删除。包括default。并且删除命名空间会将该空间下部署的所有资源连带删除,谨慎操作。

Pod

pod是运行中的一组容器,是kubernetes中应用的最小单位。

  1. 查看pod
kubectl get pod -A

此命令默认情况下是查看所有的pod。如果我们想看指定命名空间下的pod,可以使用kubectl get pod -n 空间名称,不加参数,查看默认名称空间。

  1. 创建pod

创建一个名称为mynginx的pod,使用的镜像为nginx。

  • 命令行方式
kubectl run mynginx --image=nginx
[root@k8s-master ~]# kubectl get pod [mynginx]NAMEREADY STATUSRESTARTS AGEmynginx 1/1 Running 080s[root@k8s-master ~]# 

说明:NAME表示pod名称。READY表示就绪的容器数量以及总容器数量。STATUS表示状态。RESTARTS表示重启次数。AGE表示创建时长。

  • yaml方式,nginx.yaml
apiVersion: v1kind: Podmetadata:name: mynginxnamespace: defaultspec:containers:- image: nginxname: mynginx
  1. 打印详细描述信息
[root@k8s-master ~]# kubectl describe pod [mynginx]......Events:TypeReason AgeFrom Message---------- ---- ---- -------NormalScheduled4m54sdefault-schedulerSuccessfully assigned default/mynginx to k8s-worker2NormalPulling4m53skubeletPulling image "nginx"NormalPulled 3m49skubeletSuccessfully pulled image "nginx" in 1m4.144467081sNormalCreated3m48skubeletCreated container mynginxNormalStarted3m48skubeletStarted container mynginx[root@k8s-master ~]# 

主要看事件部分。包括被分配的节点信息等。我们发现在k8s-worker2节点创建了pod,所以通过docker ps | grep mynginx查看的时候只有在worker2节点才可看到。

  1. 打印详细日志信息
[root@k8s-master ~]# kubectl logs [mynginx]...2022/06/27 15:18:45 [notice] 1#1: start worker process 322022/06/27 15:18:45 [notice] 1#1: start worker process 33[root@k8s-master ~]# 
  1. 查看pod被分配的ip
[root@k8s-master ~]# kubectl get pod -owide [mynginx]NAMEREADY STATUSRESTARTS AGEIPNODENOMINATED NODE READINESS GATESmynginx 1/1 Running 04m6s 192.168.126.8 k8s-worker2 <none> <none>[root@k8s-master ~]# 

集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod,curl 192.168.126.8:[80]

  1. 进入pod容器内部
[root@k8s-master ~]# kubectl exec -it [mynginx] -c [mynginx] -- /bin/bashroot@mynginx:/# lsbin dev docker-entrypoint.shhomelib64mntprocrun srvtmpvarbootdocker-entrypoint.detc lib mediaoptrootsbinsysusrroot@mynginx:/# 

注意,如果是多容器的pod,我们可以加上参数-c 容器名称即可进入指定的容器内。

  1. 删除pod
kubectl delete pod [mynginx]
kubectl delete -f nginx.yml

重点说明:pod是kubernetes中应用的最小单位。在同一个pod内的容器可以直接使用127.0.0.1:端口的方式访问,但是要注意,端口不能重复。

本文由mdnice多平台发布