Pod管理与使用

K8S(Kubernetes)是一款开源的容器编排引擎,用于自动化部署、扩展和管理容器化应用程序。在K8S中,Pod是最小的调度单位,可以理解为一组相关的容器集合。以下是关于K8S Pod管理与使用的一些内容:

创建Pod:

使用YAML或JSON文件来描述Pod的规格和配置。
在文件中指定容器镜像、资源限制、环境变量等信息。
通过kubectl命令行工具执行kubectl create -f <文件名>创建Pod。
管理Pod:

使用kubectl命令行工具可以对Pod进行管理,例如查看、编辑、删除等操作。
使用kubectl get pods命令可以获取当前集群中的所有Pod。
使用kubectl describe pod 命令可以查看指定Pod的详细信息。
使用kubectl delete pod 命令可以删除指定的Pod。
多容器Pod:

一个Pod可以包含多个容器,这些容器共享相同的网络命名空间和存储卷。
多容器Pod适用于需要共享本地资源或实现紧密耦合的应用场景。
各个容器之间可以通过localhost或者共享的存储卷进行通信和数据交互。
资源管理:

可以通过在Pod的描述文件中设置资源请求和限制来管理Pod使用的计算资源(CPU、内存等)。
资源请求用于调度决策,资源限制用于容器运行时的控制和限制。
K8S会根据节点上的资源情况进行合理的调度,以保证各个Pod的资源需求被满足。
健康检查与重启:

K8S支持对Pod进行健康检查,以确保容器应用的可用性。
可以通过在Pod描述文件中定义探测器来配置健康检查,常见的有存活探测和就绪探测。
如果某个容器失败或不响应健康检查,K8S会自动重新启动该容器。
总之,Kubernetes提供了强大的Pod管理能力,允许用户创建、扩展和管理容器化应用程序。通过合理配置Pod的规格和资源,可以实现高效的容器编排和资源利用。

一:创建一个pod
1.通过yaml配置文件去创建一个pod

[root@k8s-master1 POD]# cat mypod.yaml
kind: Pod
apiVersion: v1
metadata:
  name: mypod
  namespace: app
spec:
  containers:
    - name: mypod
      image: busybox
      args:
      - /bin/sh
      - -c
      - sleep 3h
#kubectl apply -f 指定配置文件去执行
[root@k8s-master1 POD]# kubectl apply -f mypod.yaml
pod/mypod created
[root@k8s-master1 POD]# kubectl get pods -n app -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP              NODE          NOMINATED NODE   READINESS GATES
mypod   1/1     Running   0          35s   10.10.135.217   k8s-master3   <none>           <none>
#查看pod的详细信息   kubectl describe pods +name
[root@k8s-master1 POD]# kubectl describe pods mypod  -n app
Name:         mypod
Namespace:    app
Priority:     0
Node:         k8s-master3/192.168.21.122
Start Time:   Wed, 29 Nov 2023 21:33:21 +0800
Labels:       <none>
Annotations:  cni.projectcalico.org/containerID: fb0bdff8d1a50964fe035ba611ddb27f71bbe1238c77514918a611b2babb6877
              cni.projectcalico.org/podIP: 10.10.135.217/32
              cni.projectcalico.org/podIPs: 10.10.135.217/32
Status:       Running
IP:           10.10.135.217
IPs:
  IP:  10.10.135.217
Containers:
  mypod:
    Container ID:  docker://3efc4d81429047afe769e3f942e557d1026bb5ae58f89efd464d6a1719c7d2dc
    Image:         busybox
    Image ID:      docker-pullable://busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
    Port:          <none>
    Host Port:     <none>
    Args:
      /bin/sh
      -c
      sleep 3h
    State:          Running
      Started:      Wed, 29 Nov 2023 21:33:25 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ncwwh (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  kube-api-access-ncwwh:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  6m1s   default-scheduler  Successfully assigned app/mypod to k8s-master3
  Normal  Pulling    6m     kubelet            Pulling image "busybox"
  Normal  Pulled     5m57s  kubelet            Successfully pulled image "busybox" in 3.076013328s
  Normal  Created    5m57s  kubelet            Created container mypod
  Normal  Started    5m57s  kubelet            Started container mypod

#kubectl exec -it pods+name -- /bin/sh   进入容器
[root@k8s-master1 POD]# kubectl exec -it mypod -n app -- /bin/sh
/ #
#kubectl delete pods   删除容器
[root@k8s-master1 POD]# kubectl delete pods mypod -n app
pod "mypod" deleted


你可能感兴趣的:(K8S学习,kubernetes)