江小南

V1

2022/06/28阅读:12主题:默认主题

kubernetes资源对象介绍及常用命令

命名空间

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

  1. 查看命名空间
kubectl get ns

ns是namespace的缩写。

  1. 创建命名空间

创建一个hello的命名空间。

  • 命令行方式
kubectl create ns hello
  • yaml方式,hello.yaml
apiVersion: v1
kind: Namespace
metadata:
  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]
NAME      READY   STATUS    RESTARTS   AGE
mynginx   1/1     Running   0          80s
[root@k8s-master ~]# 

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

  • yaml方式,nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: mynginx
  namespace: default
spec:
  containers:
  - image: nginx
    name: mynginx
  1. 打印详细描述信息
[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节点才可看到。

  1. 打印详细日志信息
[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 ~]# 
  1. 查看pod被分配的ip
[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]

  1. 进入pod容器内部
[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 容器名称即可进入指定的容器内。

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

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

分类:

后端

标签:

云计算

作者介绍

江小南
V1