美文网首页Rancher
如何使用Rancher在OpenStack上创建K8S集群

如何使用Rancher在OpenStack上创建K8S集群

作者: RancherLabs | 来源:发表于2020-04-09 23:02 被阅读0次

    不可否认的是,OpenStack仍然是可行的云操作系统,并且被全世界许多互联服务提供商使用。而Rancher是业界最为广泛使用的Kubernetes管理平台,通过简洁直观的GUI集中管理企业IT中的多个Kubernetes集群。Rancher还提供用于应用程序开发的集成工具以及用于安全性和治理的强大的企业级功能。目前Rancher已有三亿核心镜像下载量。本文将使用Rancher在Openstack上创建一个Kubernetes集群。

    image

    本文中的设置是在teuto.net运营的Bielefeld的teutoStack公有云环境中执行的,因此安装过程可能会有略微不同。

    Kubernetes本身与OpenStack集成已经一段时间了,并且已经建立了良好的基础。它由两个组件组成:OpenStack云提供程序以及OpenStack节点驱动程序。在Rancher中,默认可以获取云提供程序,同时Rancher中也有节点驱动程序,但是这不是默认提供的。

    在OpenStack上构建一个Rancher Kubernetes集群有两种方式:使用OpenStack节点驱动程序或通过自定义节点设置(https://rancher.com/docs/rancher/v2.x/en/cluster-provisioning/rke-clusters/custom-nodes/)。

    为了便于访问,本文中的所有配置示例你都可以在Github上获取:

    https://github.com/chfrank-cgn/Rancher/tree/master/openstack

    启动OpenStack云提供程序

    要允许Kubernetes访问OpenStack API,以创建load balancer或volume,需要启用OpenStack云提供程序。为此,请在Rancher GUI中为云提供程序创建集群时选择“自定义”选项,然后将以下信息插入集群配置(通过“编辑YAML”)——你可以根据需要替换实际值:

    rancher_kubernetes_engine_config:
    ...
      cloud_provider:
        name: "openstack"
        openstackCloudProvider: 
          block_storage: 
            ignore-volume-az: true
            trust-device-path: false
            bs-version: "v2"
          global: 
            auth-url: "https://api.openstack.net:5000/v3" # Keystone Auth URL
            domain-name: "Default" # Identity v3 Domain Name
            tenant-id: "616a8b01b5f94f99acd00a844f8f46c3" # Project ID
            username: "user" # OpenStack Username
            password: "pass" # OpenStack Password
          load_balancer:
            lb-version: "v2"
            subnet-id: "f339e543-a67f-45fa-8157-4a58b0940e0b"
            floating-network-id: "ca27ca05-2870-47b3-ad2f-535d04c9e736"
            create-monitor: false
            manage-security-groups: true
            monitor-max-retries: 0
            use-octavia: true
          metadata: 
            request-timeout: 0
      ignore_docker_version: false
      ...
    

    有了这些信息,Kubernetes将可以访问OpenStack API,创建和删除资源以及访问Cinder volume和Octavia负载均衡器。没有这一配置,Kubernetes集群也能够良好运行,只是无法访问Cinder或者Octavia,或者其他OpenStack资源。

    方式1:使用OpenStack节点驱动程序创建集群

    需要在Rancher配置中启用节点驱动程序,才能使用内置节点驱动程序在OpenStack上创建Kubernetes集群。然后需要使用以下信息创建一个节点模板(可以根据需要更换实际值):

    
    "authUrl": "https://api.openstack.net:5000/v3",
    "availabilityZone": "Zone1",
    "domainName": "Default",
    "flavorName": "standard.2.1905",
    "floatingipPool": "extern",
    "imageName": "ubuntu-18.04-bionic-amd64",
    "keypairName": "rancher",
    "netName": "intern",
    "sshPort": "22",
    "sshUser": "ubuntu",
    "tenantId": "616a8b01b5f94f99acd00a844f8f46c3",
    "username": "user"
    

    之后,与所有其他云提供商一样,集群创建非常简单。

    安全选项

    以下防火墙规则需要在Rancher和OpenStack租户之间定义,以启用自动集群设置:

    • 双向ssh、http和https

    • 从Rancher到租户节点的2376(docker)

    • 租户节点之间的2376、2379、2380、6443和10250

    方式2:使用自定义节点创建集群

    可以在启动脚本的帮助下从单独创建的实例中构建集群,以安装和启用docker(在Ubuntu 18.04 TLS上):

    
    #!/bin/sh
    apt-get update
    apt-get -y install apt-transport-https jq software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    apt-get update
    apt-get -y install docker-ce=18.06.3~ce~3-0~ubuntu
    usermod -G docker -a ubuntu
    exit 0
    

    安全事项

    需要为OpenStack租户定义以下防火墙规则,以允许从现有节点创建集群:

    • 来自Workstation的SSH

    • 到Rancher的http和https

    访问Cinder块存储

    为了访问Cinder块存储,需要应用以下存储类的定义:

    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: cinder
    provisioner: kubernetes.io/cinder
    reclaimPolicy: Delete
    parameters:
      availability: nova
    

    无需进一步操作即可启用OpenStack负载均衡器。

    故障排查

    初始设置过程中会出现一些报错,需要不断试错。而Rancher本身就是一个很好的debug信息来源,它的日志以标准文件形式输出,抓住这一线索将对调试有很大帮助,尤其是在创建节点的过程中。

    相关文章

      网友评论

        本文标题:如何使用Rancher在OpenStack上创建K8S集群

        本文链接:https://www.haomeiwen.com/subject/ltekmhtx.html