前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大蕉说k8s(1)-quickstart No.181

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

作者头像
大蕉
发布2020-02-26 15:52:59
3700
发布2020-02-26 15:52:59
举报

今天这篇文章是写给觉得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操作系统)

代码语言:javascript
复制
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 就是我们需要提交新建或者更新的部署定义文件。

代码语言:javascript
复制
kubectl apply -f busybox.yaml

我们怎么知道我们的 POD 现在是什么情况呢?还是一样使用标准的 k8s 查询方案,获取 default 命名空间下的 POD。k8s 中所有的操作,如果没有指定命名空间的话,都会默认在 default 默认命名空间下执行。

代码语言:javascript
复制
kubectl get pods
代码语言:javascript
复制
NAME                       READY   STATUS    RESTARTS   AGE
busybox-868975484c-vss28   1/1     Running   0          45s

我们可以看到,容器正在创建中,如果一直没有创建成功,一样还是要查看一下网络是不是有问题,镜像没有下载下来,查看的命令是。

代码语言:javascript
复制
kubectl describe pod  busybox-868975484c-vss28

如果已经 Running 了,说明容器已经创建成功了,这时候我们可能希望登入到容器里看一眼,可以使用 exec 命令,登入到容器里,就跟一台普通的 linux 机器是一样的啦,自己玩耍吧。

代码语言:javascript
复制
kubectl exec -it busybox-868975484c-vss28 -- /bin/sh

好嘞,回顾一下,我们今天干了啥。

1、安装 Docker 和 kubenertes。

2、定义了一个 POD,并将它启动起来。

3、登入到 POD 的容器里。

就酱,蟹蟹~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名叫大蕉的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档