+ All Categories
Home > Documents > 云 QingCloud Kubernetes · 2017-06-13 · Kubernetes 概览 Pod Pod scheduling actuator REST...

云 QingCloud Kubernetes · 2017-06-13 · Kubernetes 概览 Pod Pod scheduling actuator REST...

Date post: 20-May-2020
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
26
Transcript
  • ⻘青云QingCloud 容器器及 Kubernetes 实践王渊命 | ⻘青云QingCloud 容器器平台负责⼈人

  • 当我们谈论容器器时我们在谈论什什么?

  • 容器器的两个视⻆角►资源隔离

    ►应⽤用封装►资源隔离

    ►应⽤用封装

  • ► 容器器技术⼀一家独⼤大百花⻬齐放

    ► Docker, Rocket, Mesos Universal container, LXC, Hyper Container

    ► 调度系统三⾜足鼎⽴立

    ► Kubernetes, Mesos, Swarm

    2016年年容器器技术思考:Docker, Kubernetes, Mesos 将⾛走向何⽅方?http://jolestar.com/container-ecosystem/

    容器器⽣生态圈现状

  • Container@QingCloud

    ►资源视⻆角

    ►应⽤用视⻆角

  • Container@QingCloud — 资源视⻆角

    ►QingCloud IaaS 调度系统

    ⽀支持 Container Instance

    Hardware

    HostOS

    Hypervisor

    GuestOS

    Applica6ons

    Applica6ons

    VirtualInstance ContainerInstance

  • Container@QingCloud — 应⽤用视⻆角"container": { "type": "docker", "image": "zookeeper"}►AppCenter ⽀支持

    Docker 镜像

  • Container@QingCloud — 应⽤用视⻆角

    ►AppCenter ⽀支持各

    种容器器编排系统

  • Kubernetes@QingCloud

    ⽹网络 存储 负载均衡 弹性

  • Kubernetes 概览

    PodPod

    schedulingactuator

    REST(pods,services,

    rep.contollers)

    authenticationauthorization

    kubectl(user commands)

    SchedulerScheduler

    controller manager

    APIs

    Master componentsDistributedWatchable

    Storage(implemented via etcd)

    kubelet Proxy

    cAdvisorcAdvisor

    cAdvisorcontainer

    cAdvisorcontainer

    Firewall

    Internet

    Pod

    docker

    Node

    PodPod

    kubelet Proxy

    cAdvisorcAdvisor

    cAdvisorcontainer

    cAdvisorcontainer

    Pod

    docker

    Node

  • Kubernetes 抽象概念

    Service StatefulSet(PetSet)

    Job PersistentVolume

    ReplicaSet(ReplicationController) PersistentVolumeClaim

    Deployment Namespace

    DaemonSet Label/Selector

  • Kubernetes ⽹网络• CNI (Container Network

    Interface)

    - Flannel

    - Calico

    - Contiv

    • ClusterIP

    - Virtual IP

    - Iptables

    ► 容器器之间可以直接互通,不不需要 NAT

    ► 节点可以喝喝容器器直接互通,不不需要 NAT

    ► 容器器看到⾃自⼰己的 IP 应该和其他容器器看到的⼀一样

  • Kubernetes ⽹网络之 ClusterIP{ "kind": "Service", "apiVersion": "v1", "metadata": { "name": "my-service" }, "spec": { "selector": { "app": "MyApp" }, "ports": [ { "protocol": "TCP", "port": 80, "targetPort": 9376 } ], "clusterIP": "10.0.171.239", "type": “LoadBalancer
 /NodePort" } }

  • Kubernetes ⽹网络之 flannel► Discovery

    • etcd

    • kube-subnet-mgr

    ► Backend

    • vxlan

    • aws-vpc

  • Kubernetes ⽹网络之 QingCloud

    VPCPod

    Pod

    Nic1(192.168.1.10)

    Nic1(192.168.1.11)

    NicX(192.168.1.X)

    ...

    Nic0(192.168.0.10)

    PodNode1

    LoadBalancer

    Internet

    Legacy App VM1

    Public LoadBalancer

    Pod

    Pod

    Nic1(192.168.2.10)

    Nic1(192.168.2.11)

    NicX(192.168.2.X)

    ...

    Nic0(192.168.0.11)

    PodNode2

  • Kubernetes 负载均衡器器Internet

    LoadBalancer

    kube-proxy/iptables

    NodePort

    B

    B

    kube-proxy/iptables

    NodePort

    B

  • Kubernetes 之 QingCloudLB

    VPCPod

    Pod

    Nic1(192.168.1.10)

    Nic1(192.168.1.11)

    NicX(192.168.1.X)

    ...

    Nic0(192.168.0.10)

    PodNode1

    LoadBalancer

    Internet

    Legacy App VM1

    Public LoadBalancer

    Pod

    Pod

    Nic1(192.168.1.10)

    Nic1(192.168.1.11)

    NicX(192.168.1.X)

    ...

    Nic0(192.168.0.10)

    PodNode1

  • Kubernetes 存储

    Container(MySQL)

    Node1 LocalDisk

    Container(MySQL)

    Node2 LocalDisk

    Controller Manager

    X

    scheduler

    Container(MySQL)

    Node1

    DistributeDisk

    Container(MySQL)

    Node2

    Controller Manager

    OK

    scheduler

  • Kubernetes 存储► DistributeDisk

    • nfs

    • ceph

    • glusterfs

    • PersistentVolume plugin - gcePersistentDisk

    - awsElasticBlockStore

    - qingCloudStore

  • Kubernetes 存储之 QingCloudStore► PersistentVolume Plugin

    ► PersistentVolume

    ► StorageClass

    ► PersistentVolumeClaim

  • Kubernetes 存储之 QingCloudStorekind: PersistentVolume 
apiVersion: v1 
metadata:
 name: qingcloud-pv
 labels:
 type: qingcloud 
spec:
 capacity:
 storage: 10Gi 
 accessModes:
 - ReadWriteOnce 
 qingCloudStore:
 volumeID: vol-caoxtgg3 
 fsType: ext4

    kind: PersistentVolumeClaim
apiVersion: v1 
metadata:
 name: qingcloud-pvc
 annotations:
 volume.beta.kubernetes.io/storage-class: qingcloud-storageclass
spec:
 accessModes:
 - ReadWriteOnce 
 resources:
 requests:
 storage: 3Gi

    kind: StorageClass
apiVersion: storage.k8s.io/v1beta1 
metadata:
 name: qingcloud-storageclass
provisioner: kubernetes.io/qingcloud-volume 
parameters:
 type: "3"

  • Kubernetes ⾃自动伸缩► Deployment

    ► 集群的⾃自动伸缩 (TriggeredScaleUp Event)

    kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

    gcloud container clusters create mytestcluster \—zone=us-central1-b --enable-autoscaling --min-nodes=3 --max-nodes=10 --num-nodes=5

  • Kubernetes@QingCloud

    ► ⽹网络 (SDN Passthrough)

    ► 存储 (PersistentVolumePlugin)

    ► 负载均衡 (LB + SDN)

    ► ⾃自动伸缩 (Event + IaaS API)

  • 计划

    ► 7 ⽉月份公开试⽤用

    ► AppCenter ⽀支持 Kubernetes 应⽤用规范

    ► Kubernetes 之上的服务


Recommended