pod概念,部署pod应用

一:kubectl工具的使用

kubectl 是操作k8s的命令行工具,能连接到apiserver上实现k8s中各种资源的增删改查。

kubectl --help 查看kubectl的帮助命令,有哪些参数,常用的如下:
  get:列举资源信息,如pod,service,deployment等
  kubectl get pods
  kubectl get deployment
  kubectl get service
  describe:列举资源的详细信息
  logs:查看pod输出的日志信息
  edit:编辑服务器上定义的资源
  delete:删除指定的资源
  exec:可以交互式的登录到pod中的容器
  apply:对资源做配置
  explain:显示资源文档信息,可以查看某个资源的具体用法
  run:运行一个pod实例

如:kubectl run nginx --image=nginx 可以创建一个nginx应用(也就是创建一个pod,这块没太明白。此条命令表示控制器名字叫Nginx、pod的名字是控制器名字+一串随机数字)


实际创建pod应用都是通过编写资源清单文件进行创建

1、默认的空间下,是没有任何东西的。需要指定资源空间名称。

目前没太明白get pods 和 get deployment的区别。

 

 2、pod相当于我们tomcat容器,我们就可以把应用部署到pod中,所以pod充当的是一个逻辑主机的角色;

一般来说,用户不应该直接创建Pod,即使创建单个的Pod也应该通过控制器创建。在集群范围内,控制器为Pod提供自愈能
力,以及副本和部署管理。(控制器指的是deployment吗)

3、和pod相关的API对象

kubectl explain pods 可以看到和pod相关的api对象有哪些,也就是通过资源清单部署一个pod时需要哪些字段。

apiVersion
apiVersion定义了此对象表示的版本化模式。服务器应将已识别的模式转换为最新的内部
值,并可能拒绝无法识别的值。更多信息:
https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
kind
Kind是表示此对象表示的REST资源的字符串值。服务器可以从客户端提交请求的端点推断出
这一点
metadata
标准对象的元数据。更多信息:
https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
spec
指定容器的所需行为。更多信息:
https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-andstatus
status
最近观察到了pod的状态。此数据可能不是最新的。由系统填充。只读。更多信息:
https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-andstatus

4、通过定义一个pod资源清单yaml创建pod

查看定义资源清单需要的命令
kubectl explain pods.apiVersion
kubectl explain pods.kind
kubectl explain pods.metadata
kubectl explain pods.spec

cat pod.yaml

 

 kubectl apply -f pod.yaml 通过yaml文件创建一个pod应用,然后查看pod运行情况。

 

 (5)pod生命周期

(6)常见的pod状态

(7)node lable

(1)查看nodes节点的标签
kubectl get nodes --show-labels
(2)给node节点打标签:
kubectl label nodes node01 node011=haha
kubectl get nodes --show-labels 在查看一下,显示如下,可以看到node01上有
node011这个标签了
(3)节点选择器

  nodeSelector <map[string]string>
    NodeSelector is a selector which must be true for the pod to fit on a node.Selector which must match a node's labels for the pod to be scheduled on
    that node. More info:
https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
上面有一个nodeSelector,这个是节点标签选择器,可以限制pod运行在哪个节点上
kubectl get pods -o wide

 

 从上面可以看到web运行在node1上,如果我们想要让它运行在master1上,就需要用到节点选择器

nodeSelector:
node011: haha #这个node011是我们给node01节点打的标签,在上面已经操作过
cat pod.yaml 看到完整的文件如下:

 

 kubectl delete -f pod-demo.yaml

kubectl create -f pod-demo.yaml
kubectl get pods -o wide 显示pod-demo运行在node01上了
如果node01和node02都有node011这个标签,那么nodeSelector则根据调度策略调度pod到相
应的node节点上
节点名称
nodeName:指定pod节点运行在哪个具体node上,不存在调度说法

补充:1、查看某个pod的具体信息

 

2、进到pod下面某个容器内部

 

 3、

  

 

posted on 2019-11-28 14:36  毛无语666  阅读(1334)  评论(0编辑  收藏  举报

导航