k8s系列(二):Pods与Nodes

目标

  • 了解Kubernetes Pods
  • 了解Kubernetes Nodes
  • kubectl排查故障

Kubernetes Pods


image-20181012110129014.png

Pod是Kubernetes抽象出来表示一组应用容器(比如Docker、rkt),还有这些容器共享的资源。这些资源包括:

  • 共享存储,比如Volumes
  • 网络,比如独立的集群IP地址
  • 如何去运行每个容器的信息,比如容器镜像版本、要使用的端口

Pod塑造出一个应用专用的"逻辑主机",它能包含不同的应用容器(紧密耦合的)。举例来说:一个Pod可以包含Node.js应用和另外一个产生Node.js webserver需要数据的应用。Pod的容器共享IP地址和端口空间,可以互相协作和调用,它们在同一个Node的上的共享上下文。

Pod是Kubernetes平台上的原子单位。当我们在Kubernetes上创建一个Deployment时,它将创建附带容器的Pods。每个Pod与被调度的Node绑定直到被删除。万一Node故障了,一个新Pod会被调度到其它可用的Node上。

Nodes


image-20181012110100307.png

Pod总是运行在Node之上。Node是Kubernetes中的一个工作机器,通常是一个虚拟机或者物理机。每个Node被Master管理。一个节点能有多个pod,同时Kubernetes master在集群之上自动调度pod。Master的自动调度考虑到每个Node上的可用资源。

每个Kubernetes Node至少运行:

  • Kubelet,一个负责Kubernetes Master和Node之间通讯的进程;它管理着运行在机器上Pods和Containers
  • 容器运行时(比如Docker,rkt),负责从registry拉取容器镜像,取出容器,运行应用。

kubectl排查故障


通过kubectl可以获取已部署应用的信息以及它们的环境。大多数常规操作可以通过以下kubectl命令来完成:

  • kubectl get - 列出resources
  • kubectl describe - 显示resource的详细信息
  • kubectl logs - 打印pod中container的日志
  • kubectl exec - 对pod的container执行一个命令

在应用部署之后,你可以通过这些命令去查看它们的状态、它们运行在哪里以及它们的配置。

注:参考https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/翻译,部分内容有删减及修改。

你可能感兴趣的:(k8s系列(二):Pods与Nodes)