Kubernetes 实战教学,手把手教您用2个脚本在 PWK 上启用 Compose

640?wx_fmt=png

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散!


说在前面


在 Dockercon 的第二天,Docker 在 Kubernetes 项目上开源了 Compose。这个工具无疑可以简化 Kubernetes。如果您不知道,Docker 企业版已经在 Compose File 3.3 版本中启用了这个功能,它可以让您使用相同的 docker-compose.yml 文件进行 Swarm 部署,也可以在部署应用栈时指定 Kubernetes 工作负载。

&


640?wx_fmt=png


两周前,我注意到社区中有人要求在 Kubernetes Playground 上运行 Compose on Kubernetes。出于我的兴趣,我开始研究如何简化解决方案,以便任何人都能在短时间内轻松地设置它。我创建了镜像仓库,并开始构建一个简单的脚本和 Makefile 来启动它并在 PWK 上运行。点击下列文章标题,查看详情:

 

 

在这篇博文中,我将向您演示如何使用2个脚本就可以在 Play with Kubernetes 平台上启用 Compose on Kubernetes。接下来,让我们开始吧!

640?wx_fmt=png


首先,浏览 https://labs.play-with-k8s.com/ 访问Kubernetes Playground。


640?wx_fmt=png


单击“Login”按钮,并使用 Docker Hub 或 GitHub ID 进行身份验证。


640?wx_fmt=png


一旦开始会话,您将拥有一个自己的实验室环境。

640?wx_fmt=png


添加第一个 Kubernetes 节点


单击左侧的“Add New Instance” 来建您的第一个 Kubernetes 集群节点。它会自动将其命名为“node1”。每个实例都预装了Docker Community Edition(CE)和Kubeadm。该节点将被视为我们群集的主节点。


640?wx_fmt=png

640?wx_fmt=png


引导主节点


克隆镜像仓库并在第一个实例上运行此脚本

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 容器。


640?wx_fmt=png


复制上面的 kubeadm 连接令牌命令并将其保存,以供下一步使用。此命令将用于将其他节点加入群集。

640?wx_fmt=png


添加工作节点


640?wx_fmt=png


点击“Add New Node”来添加一个新的工作节点。

640?wx_fmt=png


查集群状态

 

[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


640?wx_fmt=png


验证 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


640?wx_fmt=png


点击下列标题,阅读更多干货



如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!

  640?wx_fmt=png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值