暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

kubernetes容器管理技术揭秘(下)

Alleria Windrunner 2020-03-20
195
前面两篇我们已经介绍了kubernetes产生的历史背景和整体架构,本篇我们再来看一看kubernetes的核心概念和网络。

Kubernetes核心概念
kubernetes的核心概念有以下这些:
  • 节点(Node)

  • Pod

  • 服务(Service)

  • 存储卷(Volume)

  • 标签

  • Pod Template


节点之前我们已经介绍过了,就是一台宿主机,Pod是部署应用最小单元,在一个Pod里面的多个容器共享网络/文件等资源。服务即kubernetes接受客户端请求的api server。存储卷为容器的存储,可以分为:
  • 本地存储

  • 共享存储


本地存储即为容器内存储,比如hostPaht,而共享存储就是容器外的存储,比如MFS、Ceph。标签是作用于对象的键值对,主要用于对象的分组和识别,其实就是Id。Pod Template是Kubernetes部署创建Pod的工具。Pod Template示意图如下:

    apiVersion: v1
    kind: Pod
    metadata:
    name: myapp-pod
    labels:
    app: myapp
    spec:
    containers:
    name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

    Kubernetes网络
    kubernetes的网络规则如下:
    • Node独立IP段

    • Pod独立IP

    • 容器共享Pod独立IP


    示意图如下:

    这里会有两个问题:

    • IP分配
    • 路由设置

    kubernetes的网络类型有以下四种:

    • 无网络模式
    • Host模式
    • Bridge(Docker NAT模式)模式
    • SDN(Software Defined Networking)

    无网络模式只能使用于单机,这个意义不大。Host模式下容器是共用宿主机网络,容器安全/权限控制等同宿主机,风险较高。Bridge是二层网络模式,SDN是三层虚拟网络,比如Flannel、Calico、weave等。一般来说推荐使用Bridge就可以了,其示意图如下:


    容器间的通信

    关于容器间的网络通信,同一个Pod的容器共享同一个网络命名空间,它们之间的访问可以用localhost地址+容器端口就可以访问,示意图如下:

    那么不同Node中Pod间通信,首先Pod的IP不能冲突,其次需要将Pod的IP和所在的Node的IP关联起来,通过这个关联让Pod可以互相访问,示意图如下:

    关于kubernetes核心概念和网络就说到这里。

    文章转载自Alleria Windrunner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论