赞
踩
CSDN话题挑战赛第2期
参赛话题:云原生技术栈分享
在部署第一个应用程序中创建Deployment后,k8s创建了一个pod(容器组)来放置应用程序实例(container容器)。
pod容器组是一个k8s中一个抽象的概念,用于存放一组 container(可包含一个或多个 container 容器,即图上正方体),以及这些container(容器)的一些共享资源。这些资源包括:
例如,pod可能即包含带有node.js应用程序的container容器,也包含另一个非node.js的container容器,用于提供node.js webserver 要发布的数据。 pod中的容器共享ip地址和端口空间(同一pod中的不同container端口不能相互冲突),始终同一位置并共同调度,并在同一节点上的共享上下文中运行。(同一个pod内的容器可以使用localhost+端口互相访问)。
pod(容器组)是k8s集群上的最基本的单元。当我们在k8s 上创建Deployment 时,会在集群上创建包含容器的pod(而不是直接创建容器)。每个pod都与运行它的worker节点(node)绑定,并保持在那里知道终止或呗删除。如果节点(node)发生故障,则会在集群中的其他可用节点(node)上运行相同的pod(从同样的镜像创建container,使用相同的配置,ip地址不同,pod名字不同)。
- pod 是一组容器(可包含一个或多个应用程序容器),以及共享存储(卷volumes)、ip 地址和有关如何运行容器的信息。
- 如果多个容器紧密耦合并且需要共享磁盘等资源,则他们应该被部署在同一个pod(容器组)中。
下图显示一个node(节点)上含有4个pod(容器组)
pod(容器组)总是在node(节点)上运行。node(节点)是kubernetes集群中的计算机。可以是物理机或虚拟机。每个node(节点)都由master管理。一个node(节点)上可以呀多个pod(容器组),kubernetes master会根据每一个node(节点)上的可用资源情况,自动调度pod(容器组)到最佳的node(节点)上。
每个kubernetes node(节点)至少运行:
在部署第一个应用程序 中,我们使用了 kubectl 命令行界面部署了 nginx 并且查看了 Deployment 和 Pod。kubectl 还有如下四个常用命令,在我们排查问题时可以提供帮助:
kubectl get - 显示资源列表
#kubectl get 资源类型
#获取类型为Deployment的资源列表
kubectl get deployment
#获取类型为pod的资源列表
kubectl get pods
#获取类型为node的资源
kubectl get node
名称空间
在命令后增加 -A或 --all-namespaces 可查看所有名称空间中的对象,使用参数 -n 可查看指定名称空间的对象。例如:
#查看所有名称空间的Deployment kubectl get deployments -A kubectl get deployments --all-namespaces #查看kub-system名称空间的 Deployment kubectl get deployments -n kube-system
- 1
- 2
- 3
- 4
- 5
- 6
并非所有对象都在名称空间中
kubectl describe - 显示有关资源的详细信息
#kubectl describe 资源类型 资源名称
# 查看名称为nginx-xxx的pod信息
kubectl describe pod nginx-xxx
#查看名称为nginx的Deployment的信息
kubectl describe deployment nginx
kubectl logs - 查看pod中的容器的打印日志(类似于 docker logs)
#kubectl logs pod名称
#查看名称为nginx-xxxx的pod内的容器打印的日志
kubectl logs -f nginx-xxxx
#kubectl exec pod名称 操作命令
# 在名称为nginx-xxx的Pod中运行bash
kubectl exec -it nginx-xxx /bin/bash
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。