早先BlueMix云计算各种限制极为宽松,其提供的免费Docker容器由于配置高,并且配带IP受到极大地好评,不管各位使用Docker做站还是用作其他用途,亦或是使用Docker搭建服务器,从今天起这个时代过去了…(绑定信用卡仍可以享受免费的每月Docker配额和原生Docker服务.已知虚拟卡无法通过验证)
目前还不知道IBM为什么停止供应Docker容器,或许是为了将原生Docker逐步迁移到更加安全和便捷的Kubernetes服务,也可能是无法忍受原生容器被大量滥用.总之IBM取消了免费的原生Docker容器.不过Kubernetes依然是Docker服务,并且提供了GUI面板以及命令行服务。
目前openshift也是采用Kubernetes容器,不过IBM家的Kubernetes提供了root权限,所以并不是那么坑爹.BlueMix Kubernetes cluster免费版本(Lite版):在测试期间,Lite版可以免费创建,若绑定信用卡可以再建立原生Docker的基础上继续免费测试Kubernetes Lite版。
Lite版本使用共享硬件,提供2个CPU核心和4G内存,以及一个独立IP(可以映射给多个容器)。Kubernetes部署需要进行构建,时间约为15-45分钟.

本篇文章分享自Holic博主的原创,BlueMix的空间申请使用可能不同一般的免费空间,使用起来也有点复杂,但是参照本文的步骤基本上可以搞出一个Web应用出来。更多的建站资源与建站程序,你可以看看:
PS:2017年9月9日更新,正在找免费空间的朋友,还可以试试日本优秀的免费空间主机Xrea:日本Xrea免费空间申请与使用-优秀稳定的免费主机1GB空间免费SSL。
一、bluemix Kubernetes创建
首先打开bluemix官网:https://console.ng.bluemix.net/,登陆到bluemix面板建立容器服务.(点击放大)

容器类型选择第一个,繁体中文叫叢集,简体中文叫集群,英文叫cluster,点击建立,默认即可.只有精简(Lite)是免费的,Standard是付费的,但是可以享受独立的硬件以及自定义的子网和负载均衡等操作.(点击放大)

点击后是这样的:

部署完是这样的(推荐使用Linux环境部署kubectl。因为Windows下的CMD由于字符集和部分操作的兼容性问题会导致部分命令排版错误. ):

二、bluemix Kubernetes使用
首先需要准备两个程序,分别是Bluemix CLI和Kubernetes CLI,两个程序均支持Windows/MAC/Linux,其中Bluemix CLI是可选项,如果不需要部署CloudFoundry应用或原生Docker则可以不安装Bluemix CLI。
但是Kubernetes CLI必须安装,Kubernetes CLI不需要原生Docker支持,所以你的VPS和Windows都不需要预装原生Docker。
下载完成后的Kubernetes CLI是一个可执行文件,Windows环境下需要把Kubernetes CLI的目录放到Path环境变量下,Linux只需要吧kubectl文件移动到bin目录下并给予执行权限。(点击放大)


然后获取Kubernetes配置文件和密钥,目前有两种方法获得这些文件,一种是通过BluemixCLI命令获得,另一种实在Bluemix web console中获得.CLI命令是(该命令Windows/Linux通用):
Windows需要再增加一步操作,由于Windows不支持export命令设置环境变量.Windows用于需要到C:User当前用户名.bluemixpluginscontainer-serviceclustersmycluster目录下找到
****-mycluster.pem和kube-config-****-mycluster.yml
将这两个文件复制到C:Users当前用户名.kube目录下,并且把kube-config-****-mycluster.yml改名为config,如若没有.kube目录请自行创建。

这一步操作同样适用于Linux用户,如果不希望使用export命令也可以如此操作.Linux目录为 /home/你的用户名/.bluemix/*** 和 /home/.kube/***如果是root用户则在/root/.bluemix 或 /root/.kube下
在Bluemix web console中获得Kubernetes配置文件:

选择存取:(点击放大)

最后就可以下载了:

下载下来的是ZIP压缩包,同样包含****-mycluster.pem和kube-config-****-mycluster.yml两个文件,使用如上方法配置即可:

接下来执行命令:
如果返回Starting to server on ****:88 则成功,如果端口被占用,修改–port=后的参数,改成可用的端口.然后在浏览器访问127.0.0.1:88/ui就可以打开Kubernetes的管理面板.接下来的操作在Kubernetes管理面板进行,请不要关闭shell窗口或者CMD窗口.
三、bluemix Kubernetes管理
接下来点击管理面板中的Deployments菜单->右上角的 Create.

填写容器详细信息:

按要求填写,也可以仿照我填写,服务类型务必选择External,否则将无法映射端口.(点击放大)

端口一定要提前映射全,否则跑起来再改挺麻烦的!!另外,UDP端口和TCP端口不能同时映射,否则会出现成功建立容器但是没有service的情况,这种情况下无法映射端口!!!,也就是说我图上的操作是错误的,需要移除那个UDP端口!!
然后选择show advanced options 来设置高级选项(主要是root权限需要开启)同时设置一下CPU和RAM限制,最后选择Deploy。

设置容器大小:

随后便成功建立了一个Docker容器,如下图,所有的项目均显示绿色对勾且无红色/橙色错误提示就说明你的容器成功跑起来了.接下来需要进行一些设置以便访问S-S-H服务.由于我使用的jdeathe/centos-ssh镜像为了安全考虑禁用了root账户/密码登录,同时我还懒得搞环境变量。
于是这里需要使用命令通过Docker主控端进入容器进行S-S-H配置.这款镜像由于比较新,而且没有什么错误,非常适合生产环境,如果你懒得处理,请使用treasureboat/ssh这个镜像,这个镜像默认密码123456,用户root,是CentOS6.6的镜像.比较老,且有一些bug,但是不影响使用。

接下来我们要去SERVICE页面查看我们映射的端口.在KubernetesUI中选择Services and discovery->Service并且找到你创建的服务,服务名与你创建的容器名是一样的.默认创建的Service名字前面的图标是灰色的,不影响使用的.其中低位端口号是监听端口,高位端口号是映射端口(监听端口在上,映射端口在下)。

点击右侧的三个点->View/Edit YAML可以看到配置文件,但是没有修改经验请不要随便修改…以免出现问题。

你的公网IP可以用
如果你用的是其他人提供的比方说第三方的SS镜像啊啥的,根据第三方说明操作.有问题可以falcomaa@qq.com邮件联系我,我提供力所能及的帮助服务.(jdeathe的镜像没有开启密码登录)

接下来的操作务必在Linux环境中执行,CMD会导致VIM操作无法正常被识别…使用

然后使用以下命令进入shell

需要修改/etc/ssh/sshd_config文件(请自己安装习惯使用的编辑器),修改两项分别是PermitRootLogin和PasswordAuthentication这两项的值必须是yes.然后执行如下命令(仅限CentOS6,7不好使):
然后使用passwd命令修改root密码,这个不用我教了,如果报错/usr/share/cracklib/pw_dict.pwd: No such file or directory,请重新安装(reinstall)cracklib-dicts passwd。CentOS7 Docker可能会出现systemd不好用的BUG,这个没办法,我的解决方案是利用命令杀掉SSHD然后再重启sshd.
最后回到PC,进入xshell用映射出的端口访问一下S-S-H,应该就没问题了.

四、总结
最后还是希望各位不要滥用这些优秀的服务,有些用户可能会拿来跑S,我个人持保留意见,至于有些想跑KCP/FS等暴力加速插件的用户我个人建议是不要搞过了,个人用用就算了,别拿来跑飞机场…
然后KCP/FS需要UDP端口。但是映射过TCP端口的service无法映射udp端口,给个提示kubernetes集群内网互通…当然还有更简单的办法,我这里就不说了.善用谷歌的朋友一定会找到解决方案的。
目前还不知道IBM为什么停止供应Docker容器,或许是为了将原生Docker逐步迁移到更加安全和便捷的Kubernetes服务,也可能是无法忍受原生容器被大量滥用.总之IBM取消了免费的原生Docker容器.不过Kubernetes依然是Docker服务,并且提供了GUI面板以及命令行服务。
目前openshift也是采用Kubernetes容器,不过IBM家的Kubernetes提供了root权限,所以并不是那么坑爹.BlueMix Kubernetes cluster免费版本(Lite版):在测试期间,Lite版可以免费创建,若绑定信用卡可以再建立原生Docker的基础上继续免费测试Kubernetes Lite版。
Lite版本使用共享硬件,提供2个CPU核心和4G内存,以及一个独立IP(可以映射给多个容器)。Kubernetes部署需要进行构建,时间约为15-45分钟.

本篇文章分享自Holic博主的原创,BlueMix的空间申请使用可能不同一般的免费空间,使用起来也有点复杂,但是参照本文的步骤基本上可以搞出一个Web应用出来。更多的建站资源与建站程序,你可以看看:
- VestaCP安装与使用教程-免费的VPS和虚拟主机控制面板自带邮局和DNS解析系统
- 用Fikker自建CDN-支持Https,页面缓存,实时监控,流量统计,防CC攻击
- WHMCS安装与使用教程-WHMCS邮件发送与自定义WHMCS模板主题方法
PS:2017年9月9日更新,正在找免费空间的朋友,还可以试试日本优秀的免费空间主机Xrea:日本Xrea免费空间申请与使用-优秀稳定的免费主机1GB空间免费SSL。
一、bluemix Kubernetes创建
首先打开bluemix官网:https://console.ng.bluemix.net/,登陆到bluemix面板建立容器服务.(点击放大)

容器类型选择第一个,繁体中文叫叢集,简体中文叫集群,英文叫cluster,点击建立,默认即可.只有精简(Lite)是免费的,Standard是付费的,但是可以享受独立的硬件以及自定义的子网和负载均衡等操作.(点击放大)

点击后是这样的:

部署完是这样的(推荐使用Linux环境部署kubectl。因为Windows下的CMD由于字符集和部分操作的兼容性问题会导致部分命令排版错误. ):

二、bluemix Kubernetes使用
首先需要准备两个程序,分别是Bluemix CLI和Kubernetes CLI,两个程序均支持Windows/MAC/Linux,其中Bluemix CLI是可选项,如果不需要部署CloudFoundry应用或原生Docker则可以不安装Bluemix CLI。
但是Kubernetes CLI必须安装,Kubernetes CLI不需要原生Docker支持,所以你的VPS和Windows都不需要预装原生Docker。
Bluemix CLI :https://clis.ng.bluemix.net/ui/home.html
Kubernetes CLI :https://kubernetes.io/docs/tasks/tools/install-kubectl/
下载完成后的Kubernetes CLI是一个可执行文件,Windows环境下需要把Kubernetes CLI的目录放到Path环境变量下,Linux只需要吧kubectl文件移动到bin目录下并给予执行权限。(点击放大)


然后获取Kubernetes配置文件和密钥,目前有两种方法获得这些文件,一种是通过BluemixCLI命令获得,另一种实在Bluemix web console中获得.CLI命令是(该命令Windows/Linux通用):
bx plugin install container-service -r Bluemix #下载Bluemix容器服务插件
bx login -a https://api.au-syd.bluemix.net #指定服务可用区,目前支持Kubernetes的可用区有:美国南部,德国,悉尼
bx cs init #初始化容器服务
bx cs cluster-config mycluster #自动下载配置文件
export KUBECONFIG=/Users/ibm/.bluemix/plugins/container-service/clusters/mycluster/kube-config-prod-mel01-mycluster.yml #将配置文件设定为环境变量,Linux可用
Windows需要再增加一步操作,由于Windows不支持export命令设置环境变量.Windows用于需要到C:User当前用户名.bluemixpluginscontainer-serviceclustersmycluster目录下找到
****-mycluster.pem和kube-config-****-mycluster.yml
将这两个文件复制到C:Users当前用户名.kube目录下,并且把kube-config-****-mycluster.yml改名为config,如若没有.kube目录请自行创建。

这一步操作同样适用于Linux用户,如果不希望使用export命令也可以如此操作.Linux目录为 /home/你的用户名/.bluemix/*** 和 /home/.kube/***如果是root用户则在/root/.bluemix 或 /root/.kube下
在Bluemix web console中获得Kubernetes配置文件:

选择存取:(点击放大)

最后就可以下载了:

下载下来的是ZIP压缩包,同样包含****-mycluster.pem和kube-config-****-mycluster.yml两个文件,使用如上方法配置即可:

接下来执行命令:
kubectl get nodes
如果能获取节点则证明配置成功了.然后执行:[root@node10276-env-2244137 .kube]# kubectl proxy --port=88
Starting to serve on 127.0.0.1:88
如果返回Starting to server on ****:88 则成功,如果端口被占用,修改–port=后的参数,改成可用的端口.然后在浏览器访问127.0.0.1:88/ui就可以打开Kubernetes的管理面板.接下来的操作在Kubernetes管理面板进行,请不要关闭shell窗口或者CMD窗口.
三、bluemix Kubernetes管理
接下来点击管理面板中的Deployments菜单->右上角的 Create.

填写容器详细信息:

按要求填写,也可以仿照我填写,服务类型务必选择External,否则将无法映射端口.(点击放大)

端口一定要提前映射全,否则跑起来再改挺麻烦的!!另外,UDP端口和TCP端口不能同时映射,否则会出现成功建立容器但是没有service的情况,这种情况下无法映射端口!!!,也就是说我图上的操作是错误的,需要移除那个UDP端口!!
然后选择show advanced options 来设置高级选项(主要是root权限需要开启)同时设置一下CPU和RAM限制,最后选择Deploy。

设置容器大小:

随后便成功建立了一个Docker容器,如下图,所有的项目均显示绿色对勾且无红色/橙色错误提示就说明你的容器成功跑起来了.接下来需要进行一些设置以便访问S-S-H服务.由于我使用的jdeathe/centos-ssh镜像为了安全考虑禁用了root账户/密码登录,同时我还懒得搞环境变量。
于是这里需要使用命令通过Docker主控端进入容器进行S-S-H配置.这款镜像由于比较新,而且没有什么错误,非常适合生产环境,如果你懒得处理,请使用treasureboat/ssh这个镜像,这个镜像默认密码123456,用户root,是CentOS6.6的镜像.比较老,且有一些bug,但是不影响使用。

接下来我们要去SERVICE页面查看我们映射的端口.在KubernetesUI中选择Services and discovery->Service并且找到你创建的服务,服务名与你创建的容器名是一样的.默认创建的Service名字前面的图标是灰色的,不影响使用的.其中低位端口号是监听端口,高位端口号是映射端口(监听端口在上,映射端口在下)。

点击右侧的三个点->View/Edit YAML可以看到配置文件,但是没有修改经验请不要随便修改…以免出现问题。

你的公网IP可以用
kubectl get nodes
看到,此外Bluemix后台,KubernetesUI也能找到,自己翻翻.使用公网IP:nodeport访问S-S-H端口然后如果你用的是treasureboat的镜像就可以用root/123456登陆了,如果你是jdeathe的镜像需要进行别的操作.如果你用的是其他人提供的比方说第三方的SS镜像啊啥的,根据第三方说明操作.有问题可以falcomaa@qq.com邮件联系我,我提供力所能及的帮助服务.(jdeathe的镜像没有开启密码登录)

接下来的操作务必在Linux环境中执行,CMD会导致VIM操作无法正常被识别…使用
kubectl get pods
获得正在运行的容器,POD的命名采用你创建时候起的名字-随机字符,比如说我创建了centos6dev,那么我的pod名就是centos6dev-3605066391-mrdrg这个.
然后使用以下命令进入shell
kubectl exec -it-- /bin/bash

需要修改/etc/ssh/sshd_config文件(请自己安装习惯使用的编辑器),修改两项分别是PermitRootLogin和PasswordAuthentication这两项的值必须是yes.然后执行如下命令(仅限CentOS6,7不好使):
service sshd restart
然后使用passwd命令修改root密码,这个不用我教了,如果报错/usr/share/cracklib/pw_dict.pwd: No such file or directory,请重新安装(reinstall)cracklib-dicts passwd。CentOS7 Docker可能会出现systemd不好用的BUG,这个没办法,我的解决方案是利用命令杀掉SSHD然后再重启sshd.
最后回到PC,进入xshell用映射出的端口访问一下S-S-H,应该就没问题了.

四、总结
最后还是希望各位不要滥用这些优秀的服务,有些用户可能会拿来跑S,我个人持保留意见,至于有些想跑KCP/FS等暴力加速插件的用户我个人建议是不要搞过了,个人用用就算了,别拿来跑飞机场…
然后KCP/FS需要UDP端口。但是映射过TCP端口的service无法映射udp端口,给个提示kubernetes集群内网互通…当然还有更简单的办法,我这里就不说了.善用谷歌的朋友一定会找到解决方案的。