windows版docker desktop里,启动用kubernetes管理的容器

系列前言

最初是想用虚拟机做大数据开发的,还特地搞了包括完整CDH5的iso镜像,希望能在单机上启动完整的CDH集群。

镜像虽然做了出来,但发现使用上太繁琐了,而且主机的资源使用效率不高,16G内存的主机,启动一组hdfs+hbase+kylin集群,什么都不干就要爆内存了。

资源不够用是硬伤,于是换到docker,用windows版docker desktop做开发也有一段时间了,一直都是用docker-compose管理容器实例的。但从业界风向看,kubernetes已经是一骑绝尘,一统天下的趋势很难扭转了。

虽然从实际使用经验看,docker-compose在单节点编排开发环境是足够用了,但为了追一下业界潮流,也为了将来能彻底转向公有云上的云开发,还是花时间学一下如何用kubernetes管理容器的好。

软件安装

docker desktop有多个版本,但能搭配kubernetes的暂时只有EDGE channel的尝鲜版本,里面的kubernetes版本也是固定的一个。

能下载windows版 的docker desktop页面地址还藏得比较深,页面链接在此 https://hub.docker.com/editions/community/docker-ce-desktop-windows
上面的下载链接有好几个,只有EDGE channel下面的才是能用kubernetes的,stable也就是稳定版本的,虽然可以打开kubernetes选项,但会一直转圈圈启动不起来。
exe下载链接在此 https://download.docker.com/win/edge/Docker%20Desktop%20Installer.exe

笔者用的windows 10,启用了hyper-v,安装过程没什么可说的。
如果是windows 7/Vista,或者windows 10家庭版,安装过程里要选择搭配VirtualBox。

下载系统镜像

kubernetes启动需要很多系统镜像,其中相当一部分会因为网络原因下载失败。
经过实验,可以参考这个文章里的做法 用阿里某团队提供的工具脚本

在有windows版git的前提下,开一个管理员权限的power shell窗口,执行下面的代码

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop
cd k8s-for-docker-desktop
Set-ExecutionPolicy  RemoteSigned
./load_images.ps1
Set-ExecutionPolicy  Restricted

需要下载工具脚本到本地并执行。但windows 10默认策略限制了这类下载回来的脚本执行,所以需要管理员权限修改一下执行策略,执行完了再改回来

调整docker desktop设置

安装后默认docker desktop是使用docker-engine和docker-compose的,需要手工选中一下Enable Kubernetes
windows版docker desktop里,启动用kubernetes管理的容器_第1张图片

实验centos镜像

拿centos mini镜像实验一下,如果本地还没有,需要拉一下,这里有个细节,如果镜像后缀是latest, kubernetes的默认设置是会重新拉取这种latest后缀镜像的最新版本。
这里用centos 7实验一下

docker pull centos:7

写一个hello world的pod配置文件,顺便吐槽一句,文档上这一点kubernetes比docker差多了,pod配置文件的写法比docker繁琐,配置项七零八落到处都是要查的。

kubenetes有yml(yaml)和json两种格式,层次结构都是一样的,只是写法略有不同。
用bash的echo命令输出hello world,因为这只是实验,执行一次就够了,所以配置里加了一个不需要重启的配置(restartPolicy: Never), 否则kubernetes默认是会在检测到pod的进程退出后自动重启的。

先看yml的,因为缩进是yml文件的严格要求,一定要用专门的文本编辑器写,对齐缩进,不能用tab,避免写的过程里笔误。

apiVersion: v1
kind: Pod
metadata:
  name: codebox
spec:
  restartPolicy: Never
  containers:
  - name: codebox
    image: centos:7
    command: ["/bin/bash","-c","echo hello world"]

这个文件对应的json格式为

{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
        "name": "codebox"
    },
    "spec": {
        "restartPolicy": "Never",
        "containers": [
            {
                "command": [
                    "/bin/bash",
                    "-c",
                    "echo hello world"
                ],
                "image": "centos:7",
                "name": "codebox"
            }
        ]
    }    
}

按自己偏好选择一个格式,保存为centos.yml或者centos.json。
以yml为例,启动这个pod并查看结果的命令行为下面的写法

PS >kubectl.exe create -f centos.yml
pod/codebox created
PS >kubectl.exe logs codebox
hello world

下一篇在centos的mini镜像基础上加sshd

你可能感兴趣的:(kube容万物,docker卷一切)