开源项目lab-k8s-playground v1.2发布啦!除了支持标准Kubernetes集群,OpenShift现在也可以跑在All-in-One K8S Playground里啦!如果您喜欢这个项目,欢迎点击下面的按钮,关注,加星,以及贡献代码^_^

Watch Star Fork

OpenShift

OpenShift是Red Hat开发的构筑于Kubernetes之上的企业级容器应用平台,为企业应用与服务的开发,管理,以及部署提供了全面的支持,是当前炙手可热的一款Kubernetes发行版本。其社区版称为OKD(OpenShift Kubernetes Distribution的缩写,原名Origin)。

本文将告诉你,利用All-in-One Kubernetes Playground,我们不仅可以在单机环境下部署多节点的标准Kubernetes集群,还可以部署一个支持OKD v3.11版本的单节点集群。不仅如此,像IstioAPI Connect这些应用,也已经被成功迁移到了OpenShift集群上。只需要简单几条命令,就可以完成部署,整个过程是完全自动化进行的,并且可以无限次重复!

准备环境

All-in-One K8S Playground 中文使用指南一文里,我们已经学会了如何在单机环境下快速自动部署起一个支持多节点的标准Kubernetes集群。如果要想让Playground支持OpenShift,我们只需要在此基础上,再指定一个额外的环境变量K8S_PROVIDER就可以了。目前,该环境变量支持的合法值包括:

  • dind,代表基于DIND技术(即Docker-in-Docker)实现的,可在单机环境里运行的,多节点标准Kubernetes集群;
  • oc,代表基于OpenShift的oc cluster up命令实现的,可在单机环境里运行的,单节点OpenShift集群;

为了让环境变量的设置持久生效,我们可以编辑~/.bashrc文件:

# The IP of your host, default is 127.0.0.1
export HOST_IP=<your_host_ip>
# The Kubernetes provider, default is dind
export K8S_PROVIDER=oc
# The Kubernetes version, default is v1.14
export K8S_VERSION=
# The number of worker nodes, default is 2
export NUM_NODES=

如果我们选择部署OpenShift,那么K8S_VERSIONNUM_NODES这两个环境变量会被忽略。

为了在当前登录终端里让上面的改动生效,我们需要执行下面的命令重新加载.bashrc

$ . ~/.bashrc

执行下面的命令,可以验证当前环境变量的设置是否正确:

$ launch env
Targets to be launched: [env]
####################################
# Launch target env...
####################################
LAB_HOME=/root/lab-playgrounds/lab-k8s-playground
HOST_IP=192.168.0.10
K8S_PROVIDER=oc
K8S_VERSION=
NUM_NODES=
Total elapsed time: 0 seconds

启动OpenShift

启动OpenShift集群所使用的命令,和启动标准Kubernetes集群是一模一样的:

$ launch kubernetes

等命令执行完毕以后,Playground会为我们在当前主机上启动起一个单节点的OpenShift集群。并且,只要机器性能足够好,我们甚至可以在一台机器上同时跑两个集群,分别代表标准的Kubernetes集群和OpenShift集群:

$ K8S_PROVIDER=dind launch kubernetes
$ K8S_PROVIDER=oc launch kubernetes

执行如下命令,我们可以同时看到跑在标准Kubernetes集群上的Dashboard和跑在OpenShift集群上的Web Console的访问地址:

$ launch endpoints
Targets to be launched: [endpoints]
####################################
# Launch target endpoints...
####################################
» common endpoints...
✔      Web Terminal: https://192.168.0.10:4200 
✔         Dashboard: http://192.168.0.10:32774/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy 
✔ OpenShift Console: https://192.168.0.10:8443/console 
Total elapsed time: 0 seconds

动图演示

下面这个动图所演示的,就是如何在一台8核32G内存的机器上,先启动一个多节点的标准Kubernetes集群,然后再启动一个单节点的OpenShift集群。利用kubectx,我们可以实现在这两个集群上下文之间的自如切换(点击图片可放大观看哦):

使用OpenShift

根据launch endpoints返回的结果,我们可以登录到OpenShift所提供的Web Console里,对应用和集群进行管理。

默认的管理员账户/密码为:admin/admin;开发人员账户/密码为:developer/developer。

如果希望通过命令行来管理应用和集群,则可以利用OpenShift提供的oc命令进行登录。以管理员身份登录:

$ oc login -u system:admin

或者以开发人员身份登录:

$ oc login -u developer

在OpenShift上运行Istio和APIC

在All-in-One K8S Playground里基于OpenShift运行Istio或APIC只需要一条命令就能实现。而且,这条命令和基于标准Kubernetes集群运行Istio或APIC是一模一样的!关于如何在标准Kubernetes集群里运行Istio,请参见All-in-One K8S Playground 中文使用指南一文;API Connect,则参见把API Connect关进All-in-One K8S Playground里一文。

等Kubernetes集群启动起来以后,执行如下命令启动Istio:

$ launch istio istio-bookinfo

执行如下命令启动APIC:

$ launch apic

在标准的Kubernetes集群里部署Istio和API Connect时,最后需要通过端口转发(port forwarding)把应用的访问地址暴露出来,从而可以在集群外面对应用进行访问。对于OpenShift而言,因为是直接在宿主机上部署的集群和应用,所以就不需要这一个步骤了。

另外,对于应用的访问地址,由于使用了nip.io提供的DNS服务,所以也不需要把主机IP和主机名的映射定义添加到本地的/etc/hosts文件里。

总之一句话,等集群启动起来以后,无需额外的步骤,我们就可以直接访问集群中的应用了。至于这些应用的访问地址具体长啥样,可以通过运行launch endpoints命令查看到。

$ launch endpoints
Targets to be launched: [endpoints]
####################################
# Launch target endpoints...
####################################
» apic endpoints...
✔   Gateway Management Endpoint: https://gwd.192.168.0.10.nip.io 
?     Gateway API Endpoint Base: https://gw.192.168.0.10.nip.io 
✔    Portal Management Endpoint: https://padmin.192.168.0.10.nip.io 
✔            Portal Website URL: https://portal.192.168.0.10.nip.io 
✔ Analytics Management Endpoint: https://ac.192.168.0.10.nip.io 
✔              Cloud Manager UI: https://cm.192.168.0.10.nip.io/admin (default usr/pwd: admin/7iron-hide)
» common endpoints...
✔      Web Terminal: https://192.168.0.10:4200 
✔         Dashboard: http://192.168.0.10:32774/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy 
✔ OpenShift Console: https://192.168.0.10:8443/console 
» istio endpoints...
✔        Grafana: http://192.168.0.10:3000 
✔          Kiali: http://192.168.0.10:20001 
✔         Jaeger: http://192.168.0.10:15032 
✔     Prometheus: http://192.168.0.10:9090 
✔ Istio Bookinfo: http://192.168.0.10:31380/productpage 
Total elapsed time: 7 seconds

更多参考资料

读到这里,相信你对开源项目lab-k8s-playground及其All-in-One Playground的应用应该有了更全面的了解了。那么,还有哪些参考资料你可以访问呢?那就请快速读一下下面这段Shell脚本编写的“代码”吧😊 相信一定难不倒你!

选择你感兴趣的分支,点击相应分支下列出的文档资源。最后,如果您喜欢这个项目,欢迎点击本文开头处(或下列代码注释里)的按钮,关注,加星,以及贡献代码^_^

function where_to_start {
  case $I_want in
  "to learn what it provides in general")
    cat "All-in-One K8S Playground Overview"
    ;;
  "to get started quickly")
    cat "All-in-One K8S Playground Usage Guide"
    cat "All-in-One K8S Playground 中文使用指南"
    ;;
  "to understand what's behind")
    cat "Launch multi-node k8s cluster locally in one min..."
    cat "Kubernetes实战视频: 如何1分钟内在本地启动一个多节点集群"
    cat "OpenShift v3的填坑之旅"
    cat "OpenShift v4的填坑之旅"
    ;;
  "to extend it by myself")
    cat "Launch Utility Usage Guide"
    cat "A Sample Target for Demo Purpose"
    ;;
  "to learn more cool features")
    cat "Quick Guide to Launch APIC Playground"
    cat "把API Connect关进All-in-One K8S Playground里"
    cat "All-in-One K8S Playground新增OpenShift支持"
    cat "All-in-One K8S Playground支持OpenShift v4"
    ;;
  "to contribute back")
    # Feel free to click these buttons: Watch Star Fork
    git clone https://github.com/morningspace/lab-k8s-playground.git
    ;;
  esac
}

留下评论

您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 *

正在加载...