kubernetes的pod/rc/service管理

kubernetes的pod管理

一个Pod中的应用容器共享同一组资源:

(1)PID命名空间:Pod中的不同应用程序可以看见其他应用程序的进程ID

(2)网络命名空间:Pod中的多个容器能访问同一个IP和端口范围

(3)IPC命名空间:Pod中的多个容器能够使用SystemV IPC或POSIX消息队列进行通信。

(4)UTS命名空间:Pod中的多个容器共享一个主机名

(5)Volumes(共享存储卷):Pod中的各个容器可以访问在Pod级别定义的Volumes

不建议在k8s的一个pod内运行相同应用的多个实例。也就是说一个Pod内不要运行2个或2个以上相同的镜像,因为容易造成端口冲突,而且Pod内的容器都是在同一个Node上的

    pod的yaml文件定义

    pod创建

      kubectl create -f ./php-pod.yaml

    查看当前所有的pod

      kubectl get pods

    查看某个pod运行的node

      kubectl get pod php-test -o wide

    查看pod的详细信息

      kubectl describe pod php-test

      kubectl get pod php-test -o yaml或者kubectl get pod php-test -o json 获取pod更为详细的信息

    删除pod

      kubectl delete pod php-test

RC(Replication Controller)管理

Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行, 如果少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods没有任何关联,可以修改pod 模板而不会对已创建pods有任何影响,也可以直接更新通过Replication Controller创建的pods。对于利用pod 模板创建的pods,Replication Controller根据label selector来关联,通过修改pods的label可以删除对应的pods。

    定义ReplicationController

    创建ReplicationController

      kubectl create -f php-controller.yaml

    查询rc

      kubectl get rc

      kubectl get rc php-controller

      kubectl describe rc php-controller

    更改副本数量

      kubectl scale rc php-controller --replicas=3

    删除rc

     通过更改replicas=0,可以把该RC下的所有Pod都删掉。另外kubeclt也提供了stop和delete命令        来完成一次性删除RC和RC控制的全部Pod。需要注意的是,单纯的删除RC,并不会影响已创建      好的Pod。

Service管理

虽然每个Pod都会分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失。这就引出一个问题:如果有一组Pod组成的一个集群来提供服务,那么如何来访问它们呢?

Kubernetes的Service(服务)就是用来解决这个问题的核心概念。

一个Service可以看作一组提供相同服务的Pod的对外访问接口。Service作用于哪些Pod是通过Label Selector来定义的。

     Service的定义

     Service的创建

        kubectl create -f php-service.yaml

     Service的查询

        kubectl get service

        kubectl get services

        kubectl get endpoints

     Pod的IP地址和Service的Cluster IP地址

php-service的ip是10.254.165.216,这是Service的Cluster IP地址,是k8s系统中的虚拟IP地址,有系统动态分配。Pod的IP地址是Docker Daemon根据docker0网桥的IP地址段进行分配的。Service的Cluster IP地址相对于Pod的IP地址来说相对稳定,Service被创建时即被分配一个IP地址,在销毁该Service之前,这个IP地址都不会变化了。而Pod在K8s集群中生命周期较短,可能被ReplicationController销毁、再次创建,新创建的Pod将会分配一个新的IP地址。

     外部访问Service

由于Service对象在Cluster IP Range池中分配到的IP只能在内部访问,所以其他Pod都可以无碍访问到它。但如果这个service作为前端服务,准备为集群外的客户端提供服务,我们就需要给这个服务提供公共IP了。

     NodePort

在定义Service时指定spec.type=NodePort,并指定spec.ports.nodePort的值,系统就会k8s集群中的每个node上打开一个主机上的真实端口号。这样,能访问Node的客户端都就能通过端口号访问内部的Service了。

      LoadBalancer

如果云服务商支持外接负载均衡器,则可以通过spec.tye=LoadBalancer定义Service,同时指定负载均衡器的IP地址。使用这种类型需要指定Service的nodePort和clusterIp.

       端口定义

如果一个Pod中有多个对外暴漏端口时,对端口进行命名,是个Endpoint不会因重名而产生歧义。



以上内容摘自http://blog.csdn.net/dream_broken/article/details/53115770。感谢分享!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Pod Pod是k8s的最基本的操作单元,包含一个或多个紧密相关的容器,类似于豌豆荚的概念。一个Pod可以被一...
    jony456123阅读 12,167评论 0 5
  • 1.1 Kubernetes是什么 首先,它是一个全新的基于容器技术的分布式架构领先方案; 其次,Kubernet...
    c84f3109853b阅读 80,699评论 1 117
  • •Kubernetes介绍1.背景介绍云计算飞速发展- IaaS- PaaS- SaaSDocker技术突飞猛进-...
    Zero___阅读 14,944评论 0 21
  • kubernetes 简介 一个迅速过一遍kubernetes 非常不错的资源:基于Kubernetes构建Doc...
    bradyjoestar阅读 15,321评论 2 7
  • 什么是kubernetes Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展...
    simle天晴阅读 4,669评论 0 0