设为首页 收藏本站
查看: 1088|回复: 0

[经验分享] Openstack实践(1)部署使用实例及neutron网络

[复制链接]

尚未签到

发表于 2017-12-5 07:00:00 | 显示全部楼层 |阅读模式
  版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/
  如何快速部署使用openstack,使用kolla吧,openstack技术结合容器分分钟部署(单点或者多节点,任选),分分钟升级,kolla项目是为了容器化openstack,目标是做到开箱即用,所有的组件的HA都具备。kolla是一个革命性的项目,我们以前积累的安装部署经验,全部都报废。使用kolla可以快速部署可扩展,可靠的生产就绪的openstack环境。,OpenStack Kolla项目是一个支持Openstack服务以容器的方式部署,借助ansible部署工具可以简单的扩展到多个节点。同时,又借助于使用 heat 来编排 Kolla 集群。我们也可以把 Kolla 镜像注册到一个内部的 Hub,并通过 Kubernetes(k8s)等工具来管理。kolla最终目标是为OpenStack的每一个服务都创建一个对应的Docker Image,通过Docker Image将升级的粒度减小到Service级别,从而使升级时,对OpenStack影响能达到最小,并且一旦升级失败,也很容易回滚。升级只需要三步:Pull新版本的容器镜像,停止老版本的容器服务,然后启动新版本容器。回滚也不需要重新安装包了,直接启动老版本容器服务就行,非常方便,kolla是openstack成功结合微服务和容器的开始。
  目前,Kolla提供的镜像支持部署如下OpenStack项目:
  Aodh
  Ceilometer
  Cinder
  Designate
  Glance
  Gnocchi
  Heat
  Horizon
  Ironic
  Keystone
  Magnum
  Mistral
  Murano
  Nova
  Neutron
  Swift
  Tempest
  Zaqar
  以及这些基础设施组件:
  · Ceph implementation for Cinder, Glance and Nova
· Openvswitch and Linuxbridge backends for Neutron
· MongoDB as a database backend for Ceilometer and Gnocchi
· RabbitMQ as a messaging backend for communication between services.
· HAProxy and Keepalived for high availability of services and their endpoints.
· MariaDB and Galera for highly available MySQL databases
  1、准备工作:
  The host machine must satisfy the following minimum requirements:
  2 network interfaces(第一个是ens33,NAT网络 ,DHCP分配,IP:33192.168.226.137,Horizon访问就是通过这个IP地址 ; 第二个是 ens37,NAT网络 ,DHCP分配,IP:33192.168.226.138;,这个其实是让neutron的br-ex 绑定使用,虚拟机是通过这块网卡访问外网。 )
  8GB main memory
  40GB disk space
  1.1、安装python pip最新版本
  Yum install epel-release   
  说明:EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件。
  Yum install python-pip
  pip Install -U pip
  说明:pip是 python可以跨平台的安装工具
  1.2、安装依赖包
  yum install python-devel libffi-devel gcc openssl-devel libselinux-python
  pip install -U docker-py
  #yum install -y python-docker-py
  1.3、安装ansible,kolla通过ansible来部署openstack
  Yum install ansible
  1.4、安装docker
  yum install docker-engine-1.12.5 docker-engine-selinux-1.12.5
  Systemctl enable docker
  说明:根据kolla安装要求,安装1.12.5版本的docker
  1.5、配置(当使用Systemd  建立docker引擎,如果不设置MountFlags 选项, kolla-ansible的neutron-dhcp-agent会部署失败并抛出 APIError/HTTPError.)
  Tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
  [Service]
  MountFlags=shared
  EOF
  或者再/usr/lib/systemd/system/docker.service
  [service]里加上
  #MountFlags=shared
  ExecStart=/usr/bin/dockerd --insecure-registry 192.168.226.134:4000
  说明:增加一个本地registry
  Systemctl daemon-reload
  Systemctl restart docker
  说明:重新加载并启动
  1.6、配置ntp 多机部署需要配置,否则会调度错误
  Yum install ntp
  Systemctl enable ntpd.service
  Systemctl start ntpd.service
  1.7、禁用libvirtd
  Systemctl stop libvirtd.service
  Systemctl disable libvirtd.service
  1.8、关闭防火墙和selinux
   systemctl stop firewalld && systemctl disable firewalld  sed -i '7d;1a SELINUX=disabled' /etc/selinux/config
  2、安装kolla
  Kolla安装包有两种模式:
  (1)evaluation是使用pip来安装kolla,先安装kolla-ansible,然后通过kolla-ansile将openstack的各项目镜像从互联网拉取下来。
  (2)Development是使用源码来安装kolla,下载源码,本地编译构建安装,相对比第一种要复杂一些。
  2.1、我们这里使用Development方式安装valla:
  git clone http://git.trystack.cn/openstack/kolla-ansible –b stable/ocata
  cd kolla-ansible pip install .
  说明:kolla-ansible 是一个将openstack部署到docker的工具
  Cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
  Vi /etc/kolla/globals.yml  
  kolla_base_distro: "centos"
  kolla_install_type: "source"
  openstack_release: "4.0.3"
  kolla_internal_vip_address: "192.168.226.222"
  docker_registry: "192.168.226.134:4000"
  network_interface: "ens33"
  neutron_external_interface: "ens37"
  enable_haproxy: "no"
  api_interface: "{{ network_interface }}"
  docker_namespace: "lokolla"
  说明:该配置文件配置了kolla源信息
  cp /usr/local/share/kolla-ansible/ansible/inventory/* .
  说明:这里存放了单节点和多节点部署的配置文件,我们采用单节点部署
  默认docker的registry是使用5000端口,对于OpenStack来说,有端口冲突,所以改成4000
  docker run -d -v /opt/registry:/var/lib/registry -p 4000:5000 --restart=always --name registry registry:2
  下载kolla官方提供的镜像
  http://tarballs.openstack.org/kolla/images/
  这是kolla官方提供的镜像给CI使用,只保留最新版本和最新的stable版本。大家可以下载Ocata版本
  wget http://tarballs.openstack.org/kolla/images/centos-source-registry-ocata.tar.gz tar zxvf centos-source-registry-ocata.tar.gz -C /opt/registry/
  这样就把kolla的docker镜像文件放到Regisitry服务器上。
  2.2 配置/etc/kolla/globals.yml
  network_interface: "ens33"  
  说明:ens33属于NAT网络里,设置的IP是:192.168.226.134,Horizon访问就是通过这个IP地址
  neutron_external_interface: "ens37"
  说明:ens37桥接模式,ip其实是dhcp分配,这个其实是让neutron的br-ex 绑定使用,虚拟机是通过这块网卡访问外网。
  2.3 配置登录Dashboard的密码
  kolla-genpwd
  说明:自动生产复杂密码,对应文件/etc/kolla/passwords.yml
  Vi /etc/kolla/passwords.yml
  修改keystone_admin_password: xiongjian
  2.4测试一下kolla-ansible -i all-in-one bootstrap-servers
  kolla-ansible prechecks -i ~/kolla/all-in-one  -vvv
  如果是在虚拟机里装kolla,希望可以启动虚机后再启动nova虚拟机,那么你需要把virt_type=qemu,默认是kvm
  mkdir -p /etc/kolla/config/nova
  cat << EOF > /etc/kolla/config/nova/nova-compute.conf [libvirt] virt_type=qemu
  EOF
  2.5 部署  (测试环境采用all-in-one部署,生产环境请采用多节点部署)
  kolla-ansible pull -i ~/kolla/all-in-one
  kolla-ansible deploy -i ~/kolla/all-in-one
  2.6 安装openstack 客户端
  pip install -U python-openstackclient python-neutronclient
  2.7 kolla-ansible post-deploy运行以下命令可以生成一个openrc文件(运行openstack CLI所需的环境变量):
  openrc文件生成之后,使用以下命令可以帮你做一下openstack的初始化工作,包括上传一个glance镜像以及创建几个虚拟网络:
  source /etc/kolla/admin-openrc.sh
  [iyunv@localhost ~]# cat /etc/kolla/admin-openrc.sh
  export OS_PROJECT_DOMAIN_NAME=default
  export OS_USER_DOMAIN_NAME=default
  export OS_PROJECT_NAME=admin
  export OS_TENANT_NAME=admin
  export OS_USERNAME=admin
  export OS_PASSWORD=xiongjian
  export OS_AUTH_URL=http://192.168.226.222:35357/v3
  export OS_INTERFACE=internal
  export OS_IDENTITY_API_VERSION=3
  编辑 /usr/share/kolla-ansible/init-runonce,
  网络需要根据实际情况修改
  EXT_NET_CIDR='192.168.226.0/24'
  EXT_NET_RANGE='start=192.168.226.180,end=192.168.226.199'
  EXT_NET_GATEWAY='192.168.226.1'
  说明一下,192.168.226.0的网络,就是上面ens34接的网络,这个网络是通过路由器访问互联网,配置好这个,装完虚拟机就可以直接ping通。
  2.8 执行nova demo1
  Sh init-runonce
  To deploy a demo instance, run:
  openstack server create \
      --image cirros \
      --flavor m1.tiny \
      --key-name mykey \
      --nic net-id=40f71353-665a-4885-9cd6-8fccea8c908a \
      demo1
  +-------------------------------------+-----------------------------------------------+
  | Field                               | Value                                         |
  +-------------------------------------+-----------------------------------------------+
  | OS-DCF:diskConfig                   | MANUAL                                        |
  | OS-EXT-AZ:availability_zone         |                                               |
  | OS-EXT-SRV-ATTR:host                | None                                          |
  | OS-EXT-SRV-ATTR:hypervisor_hostname | None                                          |
  | OS-EXT-SRV-ATTR:instance_name       |                                               |
  | OS-EXT-STS:power_state              | NOSTATE                                       |
  | OS-EXT-STS:task_state               | scheduling                                    |
  | OS-EXT-STS:vm_state                 | building                                      |
  | OS-SRV-USG:launched_at              | None                                          |
  | OS-SRV-USG:terminated_at            | None                                          |
  | accessIPv4                          |                                               |
  | accessIPv6                          |                                               |
  | addresses                           |                                               |
  | adminPass                           | 7RRu8kextShC                                  |
  | config_drive                        |                                               |
  | created                             | 2017-11-25T08:26:43Z                          |
  | flavor                              | m1.tiny (1)                                   |
  | hostId                              |                                               |
  | id                                  | 5cfdc7e2-25a8-4387-b462-2bf4100e2c37          |
  | image                               | cirros (86705719-3402-4d9c-865a-f86646419905) |
  | key_name                            | mykey                                         |
  | name                                | demo1                                         |
  | progress                            | 0                                             |
  | project_id                          | ffd2a5003e7f4cdb8cefa48fdb2bd767              |
  | properties                          |                                               |
  | security_groups                     | name='default'                                |
  | status                              | BUILD                                         |
  | updated                             | 2017-11-25T08:26:45Z                          |
  | user_id                             | 4edc2043e5864941acd205f60838a744              |
  | volumes_attached                    |                                               |
  +-------------------------------------+-----------------------------------------------+
  通过openstack 控制台看一下,运行成功


  查看是否支持kvm命令,我的显示不支持
  egrep -c '(vmx|svm)' /proc/cpuinfo
  0 表示不支持,1 表示支持。
  [docker 构建镜像](https://docs.docker.com/engine/getstarted/step_four/)
  [kolla-ansible 构建镜像](https://docs.openstack.org/developer/kolla/image-building.html)
  [kolla 镜像仓库](https://hub.docker.com/u/kolla/)
  [docker 服务配置](https://docs.docker.com/engine/admin/systemd/)
  [问题debug](https://docs.openstack.org/developer/kolla-ansible/troubleshooting.html)
  3、openstack Neutron
  3.1先简单了解一下neutron
  Neutron能提供虚拟的分布式(这样就可以实现跨物理机虚机在同一个vlan)二层vswitch(提供虚拟的network\subnet\port)、三层router、防火墙、负载均衡等抽象网络功能,能为每个租户提供独立的虚拟网络环境,neutron是用来创建虚拟网络的,所谓虚拟网络,就是虚拟机启动的时候会有一个虚拟网卡,虚拟网卡会连接到虚拟switch上,虚拟交换机连接到虚拟router上,虚拟路由器最终和物理网卡联通,从而虚拟网络和物理网络联通起来,可能用到的技术包括:
  L2层:通过linux内核的bridge实现虚拟二层交换机,所有连接到linux bridge的设备(如tap)处于同一网段
  L2层:Linux tap实现虚拟网卡,一个tap设备就是linux下一个进程,两个虚机通过tap通信实际上就是两个进程间通信,可以操作/dev/tap*,。
  L2层:Linux veth实现虚拟网线,用于连接两个虚拟网络设备,如下面说的qbr和br-int)
  L2层:在虚拟网桥中,如果希望虚机和外部通信,必须打开桥接到虚拟网桥中的物理网卡为混杂模式(ifconfig eth0 0.0.0.0 promisc up )。
  L3层:通过ipv4 forward(将数据包从一块网卡路由到另一块网卡)和iptable的NAT实现静态路由及转发.(例如可以实现从物理机A的eth33发出的数据包像是从物理机B的eth34端口发出去一样)。
  L3层:通过RIP OSPF BGP 自动学习建立路由表。
  L2层:OVS,作用和linux bridge类似,也是实现二层vswitch,但是多了QOS\netflow流量监控能力。
  L3层:GRE本职是在隧道的两端L4层建立UDP连接传输重新包装的L3层爆头,在目的地进行解包,因为是直接在隧道两端建立UDP连接,所以不需要像VLAN一样在物理交换机上配置TRUNK。GRE缺点是点点对的UDP连接占用端口资源和带宽资源。
  L3层:Neutron中GRE,即使两台物理机上的两台虚机也不直接建立GRE,而是通过L3的网络节点进行中转,这样可以方便使用iptable做隔离网络流量。
  L3 层:vxlan 的本职是重新定义L2层的数据帧再通过L4的UDP进行传输,对端对UDP拆包后查看L2数据帧可以看到和对端是在同一个2层。也是是通过L3L4层扩展L2层。VXLAN同样使用了GRE的隧道通过UDP传输重新封装的数据帧(其中的VNI类似于VLAN,但是为24Bit),通过VXLAN可以实现虚机跨中心迁移。
  L4-7 LBAAS 为一个租户下的多台虚机提供负载均衡,根据负载均衡策略动态的将VIP绑定到具体提供服务的虚机固定IP上,注意这个VIP可以是内网IP也可以是外网IP,根据需要实现。底层技术是基于HAPROXY
  L4-L7 FWAAS(基于iptables) 、vpnaas(基于 ipsec vpn or mpls vpn or ssl vpn)
  3.2 neutron分成多个模块分布在三个节点上。
  1.Controller节点:
  运行neutron-server进程,用于接受RESTful API请求创建网络,子网,路由器等,然而创建的这些东西仅仅是一些数据结构在数据库里面。
  2.Network节点:
  neutron-l3-agent,用于创建和管理虚拟路由器,当neutron-server将路由器的数据结构创建好,neutron-l3-agent是做具体事情的,真正的调用命令行将虚拟路由器,路由表,namespace,iptables规则全部创建好。
  neutron-dhcp-agent,用于创建和管理虚拟DHCP server,每个虚拟网络都会有一个DHCP server,这个DHCP server为这个虚拟网络里面的虚拟机提供IP。
  neutron-openvswitch-plugin-agent,这个是用于创建L2的switch的,在Network节点上,Router和DHCP Server都会连接到二层的switch上。
  3.Compute节点:
  neutron-openstackvswitch-plugin-agent,这个是用于创建L2层switch的,在compute节点上,虚拟机的网卡也是连接到二层的switch上。
  Neutron一般包括三种网络:
  1、External Network/API Network,这个网络是链接外网的,无论是用户调用OpenStack的API,还是创建出来的虚拟机要访问外网,或者外网要ssh到虚拟机,都需要通过这个网络。
  2、Data Network,数据网络,虚拟机之间的数据传输通过这个网络来进行,比如一个虚拟机要连接到另一个虚拟机,虚拟机要连接虚拟路由都是通过这个网络来进行
  3、Management Network,管理网络,OpenStack各个模块之间的交互,连接数据库,连接Message Queue都是通过这个网络来进行。
  3.3 看个例子:

  假设虚拟机VM0网卡eth0(挂载在linux bridge上面,linux虚拟网卡,可以操作/dev/tap*向这个虚拟网卡写数)有网络数据包向外网发送,那么数据会依次经过qbr Linux Bridge设备,qvb(tap设备,通常叫qvb***,quantum veth bridge)和qvo(也是TAP,通常叫做qvo***,quantum veth ovs)虚拟网络设备,到达OVS网桥br-int(完成标记和去除内部即本地租户VLAN TAG,本机虚机2层流量的本地转发)上,br-int将数据包attach到OVS网桥br-tun上,数据包再从compute节点OVS网桥的br-tun(OVS虚拟出来的网桥,进行隧道封装,并完成VNI和VLAN映射,通过他将G于其他物理机联通起来,这样物理节点之间就可以形成一个GRE的点对点通信网络或者vxlan网络)和network节点OVS网桥br-tun构成的GRE隧道穿过,交付到Network节点的OVS网桥br-int上;网络节点的br-int通过qr设备借助Linux命名空间qrouter(就是上面介绍的网络节点上的neutron-l3-agent)连通到br-ex上的qg设备,将数据包交付到OVS网桥br-ex上,最后br-ex通过网络节点的外部物理端口eth1把数据包传送到外部路由器的网关。
  注:
  1、如果是VLAN模型则hr-tun会被替换成成  ovs br-eth*,完成流量送出送入,进行本地租户VLAN和物理网络租户VLAN的转换,例如将内部VLAN100转换为外部VLAN200
  2、既然qbr和br-int都是网桥,为什么不直接连到br-int,还要通过qbr,qvb,qvo岂不是多余,为什么会有qbr呢?这是和security group的概念有关。简单说就是OVS网桥br-int没有设置iptables规则的功能,但openstack又要提供安全组服务,就借助了Linux bridge(qbr)的功能,虽然OVS的br-int和linux bridge (qbr)都是二层网桥,但是为了功能互补就同时出现了。具体了解,openstack中的security group开通哪些端口,屏蔽哪些端口是用iptables来实现的,然而br-int这些虚拟bridge都是openvswitch创建的,openstack的Kernel mode和netfilter的kernel mode不兼容。一个IP包进来要么走iptables规则进行处理,要么走openvswitch的规则进行处理,br-int上有很多openvswitch的规则,比如vlan tag等,所以iptables必须要另外建立一个linux bridge(qbr)来做,因而就有了qbr,在了解拓扑结构的时候,可以将qbr忽略,看到VM直接连接到br-int上就可以了
  3、为什么会有namespace呢,java的namespace是为了在不同namespace下有相同类名,openstack也想做到这一点。不同Tenant都创建自己的router和private network,彼此不知道别人指定了哪些网段,很有可能两个tenant都指定了192.168.0.0/24,这样不同的private network的路由表,DHCP Server就需要隔离,不然就乱了,因而就有了namespace。
  4、每个机器上都有了自己的br-int,但是对于虚拟机和虚拟router来说,它们仍然觉得自己连接到了一个大的L2的br-int上,通过这个br-int相互通信的,它们感受不到br-int下面的虚拟网卡br-tun。所以对于多节点结构,我们可以想象br-int是一个大的,横跨所有compute和network节点的二层switch。这是一种很重要的抽象思维,好像openstack环境中所有虚拟机都连接到了一个巨型的虚拟交换机上。然而br-int毕竟被物理的割开了,需要有一种方式将他们串联起来,openstack提供了多种方式,可以用GRE tunnel将不同机器的br-int连接起来,也可以通过VLAN将br-int连接起来,当然还可以使用vxlan。这就是为什么openstack有了br-int这个bridge,但是不把所有的openvswitch的规则都在它上面实现。就是为了提供这种灵活性,对于虚拟机来讲,看到的是一大整个br-int,不同机器的br-int可以有多种方式连接,这在br-int下面的网卡上面实现。
  5\br-tun也是OVS创建的虚拟网桥,它是一个中间层,接收br-int的网络数据,然后在通过特定网络协议与各个节点的br-tun相连构成一个通道层。如果所有的br-int构成的抽象层定义为虚拟二层网络,那么所有的br-tun构成的抽象层边上虚拟三层网络了。
  3.4 Horizon上创建一个neutron网络的过程:
  1、为这个Tenant创建一个private network,不同的private network是需要通过VLAN tagging进行隔离的,互相之间广播(broadcast)不能到达,这里我们我们用的是GRE模式,也需要一个类似VLANID的东西,称为Segment ID(当然也可以是FLAT模式,不用vlan)
  2、为private network创建一个subnet,subnet才是真正配置IP网段的地方,对于私网,我们常常用192.168.0.0/24这个网段
  3、为这个Tenant创建一个Router,才能够访问外网
  4、将private network连接到Router上
  5、创建一个External Network((就是我们上面设置的192.168.226.138,ens37))
  6、创建一个External Network的Subnet,这个外网逻辑上代表了我们数据中心的物理网络,通过这个物理网络,我们可以访问外网。因而PUBLIC_GATEWAY应该设为数据中心里面的Gateway,PUBLCI_RANGE也应该和数据中心的物理网络的CIDR一致,否则连不通。之所以设置PUBLIC_START和PUBLIC_END,是因为在数据中心中,不可能所有的IP地址都给OpenStack使用,另外的可能搭建了VMware Vcenter,可能有物理机,所以仅仅分配一个区间给OpenStack来用。
  7、将Router连接到External Network
  3.5下面我们看看kolla demo1都干了什么,打开horizon网络:
  可看到有两个网络1、demo-net(采用vxlan网络)连接的子网 demo-subnet 10.0.0.0/24 ,这个是内网, 2、和 public1(采用flat网络)连接的子网public1-subnet 192.168.226.0/24,这个是外网
  再看看路由,这里有一个demo-router ,是内网访问外网使用的。让demo-net连到这个路由上面。
  看看网络拓扑

  我们创建的demo1虚机连接到了demo-net上,demo-net连接到了demo-router后通过public1访问外网。
  查看一下网络信息,只列出了第一行。
  [iyunv@localhost ~]# ifconfig
  docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
  qbr349ef9d5-c1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450   //linux bridge网桥
  qvb349ef9d5-c1: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1450 //qbr 连接qvo的网卡
  qvo349ef9d5-c1: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1450 //qbr 连接qvo的网卡
  tap349ef9d5-c1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450  //直连虚机的网卡
  veth51ddac5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  //虚拟网线
  结语:
  初入坑,网络部分理解了半天,一台电脑也不好搭建多虚机和跨三层的大二层打通环境,先到这,后面在继续。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-420668-1-1.html 上篇帖子: Centos7 install Openstack Juno (RDO) (转载) 下篇帖子: 2、OpenStack Identity(身份认证)服务(keystone)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表