Kubernetes 实战教学,手把手教您用2个脚本在 PWK 上启用 Compose
出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!
在 Dockercon 的第二天,Docker 在 Kubernetes 项目上开源了 Compose。这个工具无疑可以简化 Kubernetes。如果您不知道,Docker 企业版已经在 Compose File 3.3 版本中启用了这个功能,它可以让您使用相同的 docker-compose.yml 文件进行 Swarm 部署,也可以在部署应用栈时指定 Kubernetes 工作负载。
两周前,我注意到社区中有人要求在 Kubernetes Playground 上运行 Compose on Kubernetes。出于我的兴趣,我开始研究如何简化解决方案,以便任何人都能在短时间内轻松地设置它。我创建了镜像仓库,并开始构建一个简单的脚本和 Makefile 来启动它并在 PWK 上运行。点击下列文章标题,查看详情:
在这篇博文中,我将向您演示如何使用2个脚本就可以在 Play with Kubernetes 平台上启用 Compose on Kubernetes。接下来,让我们开始吧!
首先,浏览 https://labs.play-with-k8s.com/ 访问Kubernetes Playground。
单击“Login”按钮,并使用 Docker Hub 或 GitHub ID 进行身份验证。
一旦开始会话,您将拥有一个自己的实验室环境。
添加第一个 Kubernetes 节点
单击左侧的“Add New Instance” 来建您的第一个 Kubernetes 集群节点。它会自动将其命名为“node1”。每个实例都预装了Docker Community Edition(CE)和Kubeadm。该节点将被视为我们群集的主节点。
引导主节点
克隆镜像仓库并在第一个实例上运行此脚本:
git clone https://github.com/collabnix/compose-on-kubernetes cd compose-on-kubernetes/scripts/pwk/ sh bootstrap-pwk.sh
当您执行此脚本时,作为初始化的一部分,kubeadm 会编写所需的几个配置文件,设置 RBAC 并部署 Kubernetes 控制平面组件(如 kube-apiserver、kube-dns、kube-proxy 和 etcd 等)。控制平面组件部署为 Docker 容器。
复制上面的 kubeadm 连接令牌命令并将其保存,以供下一步使用。此命令将用于将其他节点加入群集。
添加工作节点
点击“Add New Node”来添加一个新的工作节点。
检查集群状态
[node1 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master 18m v1.11.3 node2 Ready 4m v1.11.3 node3 Ready 39s v1.11.3 node4 NotReady 22s v1.11.3 node5 NotReady 4s v1.11.3
[node1 ]$ kubectl get po No resources found.
[node1 ]$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 443/TCP 1h
执行以下脚本,一次性设置好 Compose Namespace、etcd cluster 和 Compose controller:
chmod +x prepare-pwk.sh sh prepare-pwk.sh [node1 pwk]$ sh prepare-pwk.sh Creating Compose Namespace... namespace/compose created Installing Helm... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21.6M 100 21.6M 0 0 25.3M 0 --:--:-- --:--:-- --:--:-- 25.4M Preparing Helm linux-amd64/ linux-amd64/tiller linux-amd64/helm linux-amd64/LICENSE linux-amd64/README.md Creating tiller under kube-system namespace... serviceaccount/tiller created clusterrolebinding.rbac.authorization.k8s.io/tiller-cluster-rule created Creating /root/.helm Creating /root/.helm/repository Creating /root/.helm/repository/cache Creating /root/.helm/repository/local Creating /root/.helm/plugins Creating /root/.helm/starters Creating /root/.helm/cache/archive Creating /root/.helm/repository/repositories.yaml Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com Adding local repo with URL: http://127.0.0.1:8879/charts $HELM_HOME has been configured at /root/.helm. Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster. Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy. To prevent this, run `helm init` with the --tiller-tls-verify flag. For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation Happy Helming! Tiller is still coming up...Please Wait NAME READY STATUS RESTARTS AGE coredns-78fcdf6894-699fx 1/1 Running 0 5m coredns-78fcdf6894-trslx 1/1 Running 0 5m etcd-node1 1/1 Running 0 4m kube-apiserver-node1 1/1 Running 0 4m kube-controller-manager-node1 1/1 Running 0 4m kube-proxy-5gskp 1/1 Running 0 4m kube-proxy-5hbkb 1/1 Running 0 5m kube-proxy-lcsnz 1/1 Running 0 4m kube-scheduler-node1 1/1 Running 0 4m tiller-deploy-85744d9bfb-bjw2f 0/1 Running 0 15s weave-net-9vt2s 2/2 Running 1 4m weave-net-k87d7 2/2 Running 0 5m weave-net-nmmt5 2/2 Running 0 4m NAME: etcd-operator LAST DEPLOYED: Mon Jan 21 14:27:50 2019 NAMESPACE: compose STATUS: DEPLOYED RESOURCES: ==> v1/ServiceAccount NAME SECRETS AGE etcd-operator-etcd-operator-etcd-backup-operator 1 4s etcd-operator-etcd-operator-etcd-operator 1 4s etcd-operator-etcd-operator-etcd-restore-operator 1 4s ==> v1beta1/ClusterRole NAME AGE etcd-operator-etcd-operator-etcd-operator 4s ==> v1beta1/ClusterRoleBinding NAME AGE etcd-operator-etcd-operator-etcd-backup-operator 4s etcd-operator-etcd-operator-etcd-operator 3s etcd-operator-etcd-operator-etcd-restore-operator 3s ==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE etcd-restore-operator ClusterIP 10.108.89.92 19999/TCP 3s ==> v1beta2/Deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE etcd-operator-etcd-operator-etcd-backup-operator 1 1 1 0 3s etcd-operator-etcd-operator-etcd-operator 1 1 1 0 3s etcd-operator-etcd-operator-etcd-restore-operator 1 1 1 0 3s ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE etcd-operator-etcd-operator-etcd-backup-operator-56fd448cd897mk 0/1 ContainerCreating 0 2s etcd-operator-etcd-operator-etcd-operator-c5b8b8f74-pttr2 0/1 ContainerCreating 0 2s etcd-operator-etcd-operator-etcd-restore-operator-58587cdc9g4br 0/1 ContainerCreating 0 2s NOTES: 1. etcd-operator deployed. If you would like to deploy an etcd-cluster set cluster.enabled to true in values.yaml Check the etcd-operator logs export POD=$(kubectl get pods -l app=etcd-operator-etcd-operator-etcd-operator --namespacecompose --output name) kubectl logs $POD --namespace=compose Loaded plugins: fastestmirror, ovl base | 3.6 kB 00:00:00 docker-ce-stable | 3.5 kB 00:00:00 extras | 3.4 kB 00:00:00 kubernetes/signature | 454 B 00:00:00 kubernetes/signature | 1.4 kB 00:00:10 !!! updates | 3.4 kB 00:00:00 (1/7): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/7): extras/7/x86_64/primary_db | 156 kB 00:00:00 (3/7): base/7/x86_64/primary_db | 6.0 MB 00:00:00 (4/7): updates/7/x86_64/primary_db | 1.3 MB 00:00:00 (5/7): docker-ce-stable/x86_64/primary_db | 20 kB 00:00:00 (6/7): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:01 (7/7): kubernetes/primary | 42 kB 00:00:01 Determining fastest mirrors * base: mirror.nl.datapacket.com * extras: mirror.nl.datapacket.com * updates: mirror.denit.net kubernetes 305/305 Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================================== Package Arch Version Repository Size =============================================================================================== Installing: wget x86_64 1.14-18.el7 base 547 k Transaction Summary =============================================================================================== Install 1 Package Total download size: 547 k Installed size: 2.0 M Downloading packages: wget-1.14-18.el7.x86_64.rpm | 547 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : wget-1.14-18.el7.x86_64 1/1 install-info: No such file or directory for /usr/share/info/wget.info.gz Verifying : wget-1.14-18.el7.x86_64 1/1 Installed: wget.x86_64 0:1.14-18.el7 Complete! $HELM_HOME has been configured at /root/.helm. Tiller (the Helm server-side component) has been upgraded to the current version. Happy Helming! etcdcluster.etcd.database.coreos.com/compose-etcd created NAME READY STATUS RESTARTS AGE coredns-78fcdf6894-699fx 1/1 Running 0 6m coredns-78fcdf6894-trslx 1/1 Running 0 6m etcd-node1 1/1 Running 0 5m kube-apiserver-node1 1/1 Running 0 6m kube-controller-manager-node1 1/1 Running 0 5m kube-proxy-5gskp 1/1 Running 0 6m kube-proxy-5hbkb 1/1 Running 0 6m kube-proxy-lcsnz 1/1 Running 0 5m kube-scheduler-node1 1/1 Running 0 5m tiller-deploy-85744d9bfb-bjw2f 1/1 Running 0 1m weave-net-9vt2s 2/2 Running 1 6m weave-net-k87d7 2/2 Running 0 6m weave-net-nmmt5 2/2 Running 0 5m --2019-01-21 14:28:49-- https://github.com/docker/compose-on-kubernetes/releases/download/v0.4.18/installer-linux Resolving github.com (github.com)... 140.82.118.3, 140.82.118.4 Connecting to github.com (github.com)|140.82.118.3|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/158560458/e9a86500-15b2-11e9-8620-1eec5bf160e3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190121%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190121T142850Z&X-Amz-Expires=300&X-Amz-Signature=bd4020beb0f68210e2a3cfa8ca8166dddcf1d1e4868737eb9ad83363cd39c660&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dinstaller-linux&response-content-type=application%2Foctet-stream [following] --2019-01-21 14:28:50-- https://github-production-release-asset-2e65be.s3.amazonaws.com/158560458/e9a86500-15b2-11e9-8620-1eec5bf160e3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190121%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190121T142850Z&X-Amz-Expires=300&X-Amz-Signature=bd4020beb0f68210e2a3cfa8ca8166dddcf1d1e4868737eb9ad83363cd39c660&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dinstaller-linux&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.163 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.163|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 28376064 (27M) [application/octet-stream] Saving to: 'installer-linux' 100%[=====================================================>] 28,376,064 15.9MB/s in 1.7s 2019-01-21 14:28:52 (15.9 MB/s) - 'installer-linux' saved [28376064/28376064] INFO[0000] Checking installation state INFO[0000] Install image with tag "v0.4.18" in namespace "compose" INFO[0000] Api server: image: "docker/kube-compose-api-server:v0.4.18", pullPolicy: "Always" INFO[0001] Controller: image: "docker/kube-compose-controller:v0.4.18", pullPolicy: "Always" failed to find a Stack API version error: the server doesn't have a resource type "stacks" [node1 pwk]$ sh prepare-pwk.sh Creating Compose Namespace... Installing Helm... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 21.6M 100 21.6M 0 0 14.9M 0 0:00:01 0:00:01 --:--:-- 14.9M Preparing Helm linux-amd64/ linux-amd64/tiller linux-amd64/helm linux-amd64/LICENSE linux-amd64/README.md Creating tiller under kube-system namespace... clusterrolebindings.rbac.authorization.k8s.io "tiller-cluster-rule" already exists $HELM_HOME has been configured at /root/.helm. Tiller (the Helm server-side component) has been upgraded to the current version. Happy Helming! Tiller is still coming up...Please Wait NAME READY STATUS RESTARTS AGE coredns-78fcdf6894-699fx 1/1 Running 0 7m coredns-78fcdf6894-trslx 1/1 Running 0 7m etcd-node1 1/1 Running 0 6m kube-apiserver-node1 1/1 Running 0 6m kube-controller-manager-node1 1/1 Running 0 6m kube-proxy-5gskp 1/1 Running 0 6m kube-proxy-5hbkb 1/1 Running 0 7m kube-proxy-lcsnz 1/1 Running 0 6m kube-scheduler-node1 1/1 Running 0 6m tiller-deploy-85744d9bfb-bjw2f 1/1 Running 0 2m weave-net-9vt2s 2/2 Running 1 6m weave-net-k87d7 2/2 Running 0 7m weave-net-nmmt5 2/2 Running 0 6m NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE etcd-operator 1 Mon Jan 21 14:27:50 2019 DEPLOYED etcd-operator-0.8.3 0.9.3 compose Run: helm ls --all etcd-operator; to check the status of the release Or run: helm del --purge etcd-operator; to delete it Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirror.nl.datapacket.com * extras: mirror.nl.datapacket.com * updates: mirror.denit.net Package wget-1.14-18.el7.x86_64 already installed and latest version Nothing to do $HELM_HOME has been configured at /root/.helm. Tiller (the Helm server-side component) has been upgraded to the current version. Happy Helming! etcdcluster.etcd.database.coreos.com/compose-etcd unchanged NAME READY STATUS RESTARTS AGE coredns-78fcdf6894-699fx 1/1 Running 0 7m coredns-78fcdf6894-trslx 1/1 Running 0 7m etcd-node1 1/1 Running 0 6m kube-apiserver-node1 1/1 Running 0 7m kube-controller-manager-node1 1/1 Running 0 7m kube-proxy-5gskp 1/1 Running 0 7m kube-proxy-5hbkb 1/1 Running 0 7m kube-proxy-lcsnz 1/1 Running 0 6m kube-scheduler-node1 1/1 Running 0 6m tiller-deploy-85744d9bfb-bjw2f 1/1 Running 0 2m weave-net-9vt2s 2/2 Running 1 7m weave-net-k87d7 2/2 Running 0 7m weave-net-nmmt5 2/2 Running 0 6m --2019-01-21 14:30:05-- https://github.com/docker/compose-on-kubernetes/releases/download/v0.4.18/installer-linux Resolving github.com (github.com)... 140.82.118.3, 140.82.118.4 Connecting to github.com (github.com)|140.82.118.3|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/158560458/e9a86500-15b2-11e9-8620-1eec5bf160e3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190121%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190121T143006Z&X-Amz-Expires=300&X-Amz-Signature=53d5f390f91b968a53219512c18b696e1a085cbbd59cdb953ca95bea1aca4d60&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dinstaller-linux&response-content-type=application%2Foctet-stream [following] --2019-01-21 14:30:06-- https://github-production-release-asset-2e65be.s3.amazonaws.com/158560458/e9a86500-15b2-11e9-8620-1eec5bf160e3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190121%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190121T143006Z&X-Amz-Expires=300&X-Amz-Signature=53d5f390f91b968a53219512c18b696e1a085cbbd59cdb953ca95bea1aca4d60&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dinstaller-linux&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.233.59 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.233.59|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 28376064 (27M) [application/octet-stream] Saving to: 'installer-linux.1' 100%[=====================================================>] 28,376,064 16.3MB/s in 1.7s 2019-01-21 14:30:08 (16.3 MB/s) - 'installer-linux.1' saved [28376064/28376064] INFO[0000] Checking installation state INFO[0001] Compose version v0.4.18 is already installed in namespace "compose" with the same settings compose.docker.com/v1beta1 compose.docker.com/v1beta2 Waiting for the stack to be stable and running... db1: Pending [pod status: 0/2 ready, 2/2 pending, 0/2 failed] web1: Pending [pod status: 0/3 ready, 3/3 pending, 0/3 failed] db1: Ready [pod status: 1/2 ready, 1/2 pending, 0/2 failed] web1: Ready [pod status: 1/3 ready, 2/3 pending, 0/3 failed] Stack hellostack is stable and running NAME SERVICES PORTS STATUS CREATED AT hellostack 2 web1: 8082 Progressing (Stack is starting) 2019-01-21T14:30:10Z
验证 Stack
[node1 pwk]$ kubectl get stack NAME SERVICES PORTS STATUS CREATED AT hellostack 2 web1: 8082 Available (Stack is started) 2019-01-21T14:30:10Z
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Using Python to Connect Function Compute to SQL Server
Normally, a third-party module is required for establishing Python-based database connections. To connect to Microsoft SQL Server, pymssql is required. FreeTDS is required for pymssql versions earlier than 2.1.3 because pymssql depends on FreeTDS. Earlier versions of pymssql only support the Wheel packaging mode for Windows. To install pymssql on other operating syste
- 下一篇
Aliyun Linux 17.01 特性说明
中文文档 (来源:文档中心) Aliyun Linux 17.01(Golden Toad)具有如下特性。 集成阿里云内核组维护的 4.4 系列 Kernel。 支持 swap 内存压缩可保证显著减少 I/O; 支持动态补丁机制 kpatch,升级内核无需重启系统; 支持超大内存 kdump(至多 3 TB); 支持 Automatic NUMA; 用户态 vsyscall 获取时间戳性能提升; 全面支持 Docker 技术栈; 支持 pv panic,方便协助云用户快速定位内核问题; 重新设计的无锁 TCP listener,提升 2 ~ 3 个数量级防 SYN 攻击能力。 高效创建和启动。 基于虚拟化级优化栈创建实例,有效降低创建虚拟机所需时间。OS 搭载阿里云定制启动服务,提升启动速率,使创建到可登录时间控制在 30 秒内。 文件系统:新增支持文件系统
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G