命名空间
在kubernetes中,命名空间被用来隔离资源。比如配置字典,内部路由等,每个命名空间只能使用其下的。
- 查看命名空间
kubectl get ns
ns是namespace的缩写。
- 创建命名空间
创建一个hello的命名空间。
- 命令行方式
kubectl create ns hello
- yaml方式,hello.yaml
apiVersion: v1kind: Namespacemetadata:name: hello
kubectl apply -f hello.yaml
- 删除命名空间
- 命令行方式
kubectl delete ns hello
- yaml方式
kubectl delete -f hello.yaml
这里需要说明的是系统默认的命名空间无法删除。包括default。并且删除命名空间会将该空间下部署的所有资源连带删除,谨慎操作。
Pod
pod是运行中的一组容器,是kubernetes中应用的最小单位。
- 查看pod
kubectl get pod -A
此命令默认情况下是查看所有的pod。如果我们想看指定命名空间下的pod,可以使用kubectl get pod -n 空间名称
,不加参数,查看默认名称空间。
- 创建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
- 打印详细描述信息
[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节点才可看到。
- 打印详细日志信息
[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 ~]#
- 查看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]
。
- 进入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 容器名称
即可进入指定的容器内。
- 删除pod
kubectl delete pod [mynginx]
kubectl delete -f nginx.yml
重点说明:pod是kubernetes中应用的最小单位。在同一个pod内的容器可以直接使用127.0.0.1:端口
的方式访问,但是要注意,端口不能重复。
本文由mdnice多平台发布