微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

k8s是如何创建资源的?

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

 

kubectl context

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

kubectl confifig view  查看集群信息 kubectl confifig 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

 

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐