32

大蕉说k8s(1)-quickstart No.181

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzUxMDAwNDM0OA%3D%3D&%3Bmid=2247485095&%3Bidx=1&%3Bsn=ed82610a9bb8630c05bdc688670a0f9c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天这篇文章是写给觉得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),其他的错误自行搞定,我这里就默认你安装好了,这是我目前见过最简便的安装方案了。

UZN7biI.jpg!web

UfIfA3i.jpg!web

等到这里也变绿就搞定了了安装这一步,如果一直不变绿要么就是你网速不好,要么就是你网络有问题。核心错误就是镜像下载不下来,自己想办法搞定。

现在我们来启动一个 bu sy box 的官方实例,启动一个 bu sy box 容器。 下面这段代码的含义呢,就是创建一个 yaml 文件,定义这个 bu sy 容器背后 POD 的定义。 replicas 为 1 ,代表目标副本数为 1 个,也就是会创建一个 POD。 template 里面是容器模板的定义,每一个 POD 里的每一个容器都会按照这个模板创建出一模一样的。 比如其中一个 container 名字叫 bu sy box ,docker 镜像为 bu sy box :latest。k8s 会尝试下载 bu sy box 镜像的最新的版本,镜像下载成功后,会启动一个 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 的容器里。

就酱,蟹蟹~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK