• BlueMix停止供应免费原生Docker容器转而提供Kubernetes集群

    发布时间:2017-7-12 9:54 Wednesday 作者:苏苏 阅读(639)

      来源:https://blog.feixueacg.com/bluemix-stop-docker/


      早先BlueMix云计算各种限制极为宽松,其提供的免费Docker容器由于配置高,并且配带IP受到极大地好评,不管各位使用Docker做站还是用作其他用途,亦或是使用Docker搭建SS服务器,不过从今天起,这个时代过去了...(绑定信用卡仍可以享受免费的每月Docker配额和原生Docker服务.已知虚拟卡无法通过验证)
      已经更新Kubernetes简单教程,可以用于部署部分程序.
      抽奖模式开启 - 美国南部开出来的机器不一定是达拉斯的,可能是Softlayer的美国节点,德国开出来的可能是欧洲节点.

      目前还不知道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并非即时开通,需要等待空闲服务器(审核?)才可以开通Kubernetes部署需要进行构建,时间约为15-45分钟.

      Kubernetes简单教程 - 部署带有SSH的镜像并且映射端口

      首先登陆到bluemix面板建立容器服务.

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

      点击后是这样的

      部署完是这样的

      ※我推荐使用Linux环境部署kubectl,Windows下的CMD由于字符集和部分操作的兼容性问题会导致部分命令排版错误.

      首先需要准备两个程序,分别是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通用):

      Windows需要再增加一步操作,由于Windows不支持export命令设置环境变量.Windows用于需要到C:\User\当前用户名\.bluemix\plugins\container-service\clusters\mycluster目录下找到
      ****-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如果能获取节点则证明配置成功了.然后执行

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


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

      端口一定要提前映射全,否则跑起来再改挺麻烦的!!另外,UDP端口和TCP端口不能同时映射,否则会出现成功建立容器但是没有service的情况,这种情况下无法映射端口!!!,也就是说我图上的操作是错误的,徐要移除那个UDP端口!!

      然后选择show advanced options 来设置高级选项(主要是root权限需要开启)同时设置一下CPU和RAM限制,最后选择Deploy

      随后便成功建立了一个Docker容器,如下图,所有的项目均显示绿色对勾且无红色/橙色错误提示就说明你的容器成功跑起来了.接下来需要进行一些设置以便访问SSH服务.由于我使用的jdeathe/centos-ssh镜像为了安全考虑禁用了root账户/密码登录,同时我还懒得搞环境变量,于是这里需要使用命令通过Docker主控端进入容器进行SSH配置.这款镜像由于比较新,而且没有什么错误,非常适合生产环境,如果你懒得处理,请使用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访问SSH端口然后如果你用的是treasureboat的镜像就可以用root/123456登陆了,如果你是jdeathe的镜像需要进行别的操作.如果你用的是其他人提供的比方说第三方的SS镜像啊啥的,根据第三方说明操作.有问题可以[email protected]邮件联系我,我提供力所能及的帮助服务.
      (jdeathe的镜像没有开启密码登录)

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

      然后使用命令 kubectl exec -it <pod name> -- /bin/bash 进入shell

      需要修改/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用映射出的端口访问一下SSH,应该就没问题了.

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

      补充内容:解决CentOS7下systemctl命令无法使用的问题

      如果在原生Docker运行systemctl命令(用于启动/停止/重启服务的命令,也就是Service命令的升级)会提示Failed to get D-Bus connection: No connection to service manager.
      这个问题被CentOS官方定义为一个BUG,会在之后版本中修复.对于使用原生Docker环境(Kubernetes基于原生Docker)的朋友可以采用以下方案解决,在执行docker run命令时加入Run command字段值为/usr/sbin/init在KubernetesUI应当如下图设置(Debian/Ubuntu不存在次BUG.)



    标签: vps vps优惠 KVM 可WIN

    特别申明:若无说明,文章均为原创,转载时请注明本文地址,谢谢合作!
    本文链接: