大蕉说k8s(1)-quickstart No.181
今天这篇文章是写给觉得k8s很困难的娃的,其实每一门我们已知的互联网技术背后底层原理都简单得不行,但是中间被封装拓展得很复杂,在用户侧又被封装成比较简单的样子。也就是典型的 简单-&g...
今天这篇文章是写给觉得k8s很困难的娃的,其实每一门我们已知的互联网技术背后底层原理都简单得不行,但是中间被封装拓展得很复杂,在用户侧又被封装成比较简单的样子。
也就是典型的 简单->复杂扩展->简单使用 这种趋势,目前几乎所有的技术都是这样的。
比如机器学习,底层的无非是 统计学(深度学习)+矩阵计算,中间就是各种框架各种算法组合各种策略,顶层就是一个 train+predict。
比如大数据,底层原理无非是 分布式原理,中间就是 Flink、Spark、Hive 等等,顶层就是一个 SQL 的事情。
比如 Java,底层原理无非是虚拟机+字节码,中间 Spring 家族各种框架,顶层其实一个 SpringApplication.run() 搞定。
比如容器,底层原理无非就是 linux 的 namespace + cgroups 资源隔离,中间有非常多的容器技术,比如 Docker、CoreOS rkt、Containerd 等等,上层就是简单的容器定义文件和 run 命令。
底层很简单,中间很复杂,顶层很简单,这也是很多技术的真实面貌。
为什么我们要从顶层说起,因为顶层是距离我们最近的,也是我们克服对技术复杂性焦虑的最好方法。我们都知道著名的 "Hello,World! ",就是用来给我们打开新世界的大门的一把钥匙,每一门技术都绕不开一个 quickstart 。
寻找一台 Mac 或者 Windows 电脑,下载Docker 桌面版,你问我为什么要下载桌面版?因为安装太复杂了,我怕你自己搞不定嗝屁了,把 Docker 和 kubernetes 启动起来就好了。
下载地址在这里
https://www.docker.com/products/docker-desktop
下载完配置一下镜像地址,然后在 kubernetes 上把 k8s 打开就好了(因为k8s 镜像默认需要从外部地址下载,不配置镜像仓库的话,可能一直在 starting),其他的错误自行搞定,我这里就默认你安装好了,这是我目前见过最简便的安装方案了。
等到这里也变绿就搞定了了安装这一步,如果一直不变绿要么就是你网速不好,要么就是你网络有问题。核心错误就是镜像下载不下来,自己想办法搞定。
现在我们来启动一个 busybox 的官方实例,启动一个 busybox 容器。下面这段代码的含义呢,就是创建一个 yaml 文件,定义这个 busy 容器背后 POD 的定义。replicas 为 1 ,代表目标副本数为 1 个,也就是会创建一个 POD。template 里面是容器模板的定义,每一个 POD 里的每一个容器都会按照这个模板创建出一模一样的。比如其中一个 container 名字叫 busybox,docker 镜像为 busybox:latest。k8s 会尝试下载 busybox 镜像的最新的版本,镜像下载成功后,会启动一个 POD。
(BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件,是一个微型linux操作系统)
cat >> busybox.yaml << EOF
kind: Deployment
metadata:
name: busybox
spec:
replicas: 1
template:
metadata:
labels:
app: busybox
spec:
restartPolicy: Always
containers:
- name: busybox
command:
- sleep
- "3600"
image: busybox:latest
EOF
k8s 的标准提交手段,apply 一个 yaml 文件,方式 -f 表示按文件的形式,nginx.yaml 就是我们需要提交新建或者更新的部署定义文件。
kubectl apply -f busybox.yaml
我们怎么知道我们的 POD 现在是什么情况呢?还是一样使用标准的 k8s 查询方案,获取 default 命名空间下的 POD。k8s 中所有的操作,如果没有指定命名空间的话,都会默认在 default 默认命名空间下执行。
kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-868975484c-vss28 1/1 Running 0 45s
我们可以看到,容器正在创建中,如果一直没有创建成功,一样还是要查看一下网络是不是有问题,镜像没有下载下来,查看的命令是。
kubectl describe pod busybox-868975484c-vss28
如果已经 Running 了,说明容器已经创建成功了,这时候我们可能希望登入到容器里看一眼,可以使用 exec 命令,登入到容器里,就跟一台普通的 linux 机器是一样的啦,自己玩耍吧。
kubectl exec -it busybox-868975484c-vss28 -- /bin/sh
好嘞,回顾一下,我们今天干了啥。
1、安装 Docker 和 kubenertes。
2、定义了一个 POD,并将它启动起来。
3、登入到 POD 的容器里。
就酱,蟹蟹~
更多推荐
所有评论(0)