- 3.2.1 检查现有 pod 的 YAML 描述文件
">使用-o ymal选项获取 pod 的 YAML 定义:
kubectl get pods-o yaml - 3.2.2 为 pod 创建一个简单的 YAML 描述文件
- 查看pod的属性:
kubectl explain pods - 查看spec的属性:
kubectl explain pod.spec - 3.2.3 使用 kubectl create 来创建 pod
- 得到运行中 pod 的完整定义
- 查看YMAL格式的描述文件
kubectl get pods-o yaml
-o, —output=’’: Output format. - 查看JSON格式的描述文件
kubectl get pods-o json - 3.2.4 查看应用程序日志
- 3.2.5 向pod发送请求
3.2 Creating pods from YAML or JSON descriptors
pod 和其他 Kubernetes 资源通常是通过向 Kubernetes REST API 提供JSON或YAML描述文件来创建的 。同样,你也可以用其他更简单的方法创建资源,例如您在前面使用的 kubectl run 命令,但它们通常只允许您配置一组有限的属性。
因此,为了配置每种类型资源的各种属性,我们需要了解并理解 Kubernetes API 对象定义。
Kubernetes API 参考文档:http://kubernetes.io/docs/reference/
3.2.1 检查现有 pod 的 YAML 描述文件
Usage:
使用-o ymal选项获取 pod 的 YAML 定义:
kubectl get pods -o yaml
#pod的基本组成部分:
apiVersion:
kind: REST resource
metadata:
spec: Specification
status: #运行时才有这个数据
status 部分包含只读的运行时数据,该数据展示了给定时刻的资源状态。而在创建新的 pod 时,永远不需要提供 status 部分。
3.2.2 为 pod 创建一个简单的 YAML 描述文件
指定容器端口
在pod定义中指定端口纯粹是展示性的(informational)。忽略它们对于客户端是否可以通过端口连接到pod不会带来任何影响。但明确定义端口仍是有意义的,在端口定义下,每个使用集群的人都可以快速查看每个pod对外暴露的端口,可允许你为每个端口指定一个名称方便我们使用。
使用 kubectl explain 来发现可能的 API 对象字段
API对象支持属性参考文档:http://kubernetes.io/docs/api
Usage:
kubectl explain
查看pod的属性:
kubectl explain pods
查看spec的属性:
kubectl explain pod.spec
3.2.3 使用 kubectl create 来创建 pod
cd /root/k8s/
cat >kubia-manual.yaml <<'EOF'
apiVersion: v1
kind: Pod
metadata:
name: kubia-manual
spec:
containers:
- image: 10.0.0.10:5000/luksa/kubia
name: kubia
ports:
- containerPort: 8080
protocol: TCP
EOF
kubectl create -f kubia-manual.yaml
从YAML或JSON文件创建任何资源(不只是pod)
Usage:
kubectl create -f FILENAME
得到运行中 pod 的完整定义
pod创建完成后, 可以请求 Kubernetes 来获得完整的描述文件,并不区分创建时用哪种格式。
Usage:
kubectl get TYPE NAME -o (yaml | json)
查看YMAL格式的描述文件
kubectl get pods -o yaml
-o, —output=’’: Output format.
-o, —output=’’: Output format.
查看JSON格式的描述文件
kubectl get pods -o json
在 pod 列表中查看新创建的 pod
kubectl get pods
3.2.4 查看应用程序日志
容器化的应用程序通常会将日志记录到标准输出和标准错误流, 而不是将其写入文件, 这就允许用户可以通过简单、 标准的方式查看不同应用程序的日志。
容器运行时(在我们的例子中为Docker)将这些流重定向到文件, 并允许我们运行以下命令来获取容器的日志:(容器所在节点上执行)
docker logs <容器>
使用 kubectl logs 命令获取 pod 日志
Usage:
查看pod的日志(更准确地说是容器的日志), 只需要在本机上运行以下命令(适用于单容器)(master上执行)
kubectl logs
注意:每天或者每次日志文件达到10MB大小时, 容器日志都会自动轮替。
kubectl logs 命令仅显示最后一次轮替后的日志条目。
获取多容器 pod 的日志时指定容器名称
Usage:
kubectl logs
-c, —container=’’
注意:我们只能获取仍然存在的pod的日志。当一个pod被删除时,它的日志也会被删除。 如果希望在pod删除之后仍然可以获取其日志, 我们需要设置中心化的、 集群范围的日志系统, 将所有日志存储到中心存储中。
3.2.5 向pod发送请求
将本地网络端口转发到 pod 中的端口
如果想要在不通过service的情况下与某个特定的pod 进行通信(出于调试或
其他原因),Kubemetes将允许我们配置端口转发到该pod:
Usage:
kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N]
#将机器的本地(Master)端口8888转发到pod/kubia-manual 的端口8080:
kubectl port-forward kubia-manual 8888:8080
#转发时会夯在那里,需要另开终端测试连接
curl localhost:8888