k8s_核心对象及应用kubectl context、pod

k8s是如何创建资源的?

k8s可以通过yml⽂件创建k8s对象(资源),然后发布k8s集群操作。

 

kubectl context

kubectl context是k8s集群的上下⽂对象,存放着集群相关信息。常用查询kubectl context有如下命令,至于这些信息如何生成的在后续再详细说明,先大概了解kubectl cintext相关信息如何查询。

kubectl config view  查看集群信息
kubectl config get-contexts  得到所有集群context对象信息
kubectl cluster-info  查看当前集群情况
 

POD

概念

pod是k8s管理的最小单元,Pod和container的关系,⼀个Pod可以有⼀个或多个container
⼀个Pod内共享⼀个namespace,⽤户、⽹络、存储等。简单的说,pod⾥⾯如果有多个container,这些container共享⼀个ip,好⽐⼀个系统中起了多个项⽬,共享IP,⽤端⼝区分。如下图所示

 

pod的定义文件

下面是最简单的pod定义,完整的pod定义文件的每个字段含义可以自行查阅资料

#应用的api版本
apiVersion: v1
#对象类型 kind种类
kind: Pod
#对象元数据
metadata:
    #pod 名称
    name: nginx
    #labels标签配置
    labels:
        app: nginx
#对象详细信息
spec:
    #容器配置,可以多个
    containers:
    #容器名称
    - name: nginx
      #镜像名称
      image: nginx
      #端口设置
      ports:
      - containerPort: 80
View Code

pod的基本操作

创建pod

[root@k8s-01 pod_demo]# kubectl create -f demo_pod_nginx.yml
pod/nginx created

查询所有pod资源

[root@k8s-01 pod_demo]# kubectl get pods
NAME                               READY   STATUS    RESTARTS   AGE
nginx                              1/1     Running   0          2m51s

查看所有pod资源详细信息

[root@k8s-01 pod_demo]# kubectl get pods -o wide
NAME                               READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
nginx                              1/1     Running   0          3m30s   10.244.2.24   k8s-03   <none>           <none>

查询指定pod详细信息

[root@k8s-01 pod_demo]# kubectl describe pods nginx 
Name:         nginx
Namespace:    default
Priority:     0
Node:         k8s-03/192.168.188.133
Start Time:   Sat, 25 Sep 2021 23:13:42 +0800
Labels:       app=nginx
Annotations:  <none>
Status:       Running
IP:           10.244.2.24
Containers:
  nginx:
    Container ID:   docker://15f32743135523f77bd55b76b08dbe34449d3b0991c7f9c2f9d9c57fee51a1d9
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256:853b221d3341add7aaadf5f81dd088ea943ab9c918766e295321294b035f3f3e
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Sat, 25 Sep 2021 23:13:58 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-c8jx9 (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-c8jx9:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-c8jx9
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  4m40s  default-scheduler  Successfully assigned default/nginx to k8s-03
  Normal  Pulling    4m39s  kubelet, k8s-03    Pulling image "nginx"
  Normal  Pulled     4m23s  kubelet, k8s-03    Successfully pulled image "nginx"
  Normal  Created    4m23s  kubelet, k8s-03    Created container nginx
  Normal  Started    4m23s  kubelet, k8s-03    Started container nginx
View Code

删除pod

[root@k8s-01 pod_demo]# kubectl get pods|grep nginx
nginx                              1/1     Running   0          5m32s
[root@k8s-01 pod_demo]# kubectl delete pods nginx
pod "nginx" deleted
[root@k8s-01 pod_demo]# kubectl get pods|grep nginx
[root@k8s-01 pod_demo]# 

pod交互式运行

与docker的交互式运行方式类似,pod的交互式命令如下
kubectl exec -it podname -c containername /bin/bash
#podname可以通过kubectl get pods查询,-c containername可以不加,默认进入pod的第一个container。加上以后可以指定pod内特定的container。
kubectl describe pods podname可以查询指定pod的详细信息,这里面就有该pod包含的所有container信息
 
和docker exec -it containername /bin/bash有什么区别的?
#kubectl创建的pod可能不在本节点上,这时候本节点docker是无法管理pod下的container的,只有到pod所在节点才能使用docker命令操作该container,而kubectl可以在任何安装kubectl并加入集群的节点上操作任意一个pod任意一个container

 

 

 

 

 

 

 

 

 

 

posted @ 2021-09-25 23:24  flag_HW  阅读(1075)  评论(0编辑  收藏  举报