初试k8s,自顶向下的学习kubernetes

栏目: 编程工具 · 发布时间: 5年前

内容简介:之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个docker镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持久化等。如果我们像之前一样,打包好镜像,通过ssh连接到目标服务器run起来,这和打包成二进制传上去似乎也没多大进步。k8s就是帮我们解决这些难点的工具。k8s是master-node架构,通过master管理node。首先需要将你的机器组成k8s集群,集群机器的内网应该是连通的,这样你的集群就捆绑成了一个整体由k8s接管了。你只需要准备好配置文件,用

之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个 docker 镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持久化等。如果我们像之前一样,打包好镜像,通过ssh连接到目标服务器run起来,这和打包成二进制传上去似乎也没多大进步。

k8s就是帮我们解决这些难点的工具。k8s是master-node架构,通过master管理node。首先需要将你的机器组成k8s集群,集群机器的内网应该是连通的,这样你的集群就捆绑成了一个整体由k8s接管了。你只需要准备好配置文件,用k8s的api或cli(命令行)发布镜像即可,k8s会根据你配置的规则来管理容器,应用场景有:一份镜像需要部署多少个容器(replicaSets),服务的升级策略(滚动更新),服务的容灾策略(某个node挂了可以在其他node补上缺失的容器),弹性伸缩(监控CPU等指标达到临界值后自动增加容器)等。

怎么样?是不是觉得很cool,你可能迫不及待的想去把k8s用起来了,可是你打开k8s官方文档大段大段的英文和各种生疏的概念就把你整懵了。你跟着教程敲了一遍,一大堆yaml配置,全是命令行操作,可能你已经被墙给干倒了(天朝ha);还有一堆概念,什么Pod, Deployment, ReplicaSet, Service都是些啥玩意。可能你花了大半天耐心的把文档过了一遍,觉得这个东西根本落不了地啊,这一大堆配置和命令行,这谁顶得住,k8s这么先进不应该是可视化的点点就完事了吗?我一开始天真的以为k8s dashboard能帮帮我,费了点力气把它装好后,发现只有一些监控数据。

下面我想介绍另一种学习思路,自顶向下的学习。其实你一开始不用了解k8s的各种概念,只需要看看别人是怎么用k8s的就行了(都9102年了,那些很潮的公司都已经玩了很久了)。不是说学东西必须得打好基础吗?自顶向下是个什么鬼?拿学开车举例,你开始只是在路上看到别人开车,很拉风可撩妹,比两轮的安全,不怕风吹雨打的,教练我也要开车;你去报了驾校(看到这里你肯觉得我要忽悠你报培训班),你摸到了车看到别人是咋开的,了解了基本知识你就可以在训练场地慢慢蠕动了(测试环境),你甚至不用了解交规,更不用了解汽车的原理,这些后面可以慢慢补。补好基础了你就可以上路,然后你可能需要了解汽车原理,改装它优化它,再练一练排水渠过弯的技巧,成为一代老司机。

回到正题,我们学k8s同样可以先看看别人是咋用的,再去了解其中细节,掌握它。咋看呢?一大部分公司还没跟上潮流,这时我们可以借助开源和云服务。

首先我们的思路没有问题,要便捷的使用k8s我们需要一个可视化管理平台。

开源的有rancher、Qihoo360/wayne等,云服务阿里云、腾讯云、AWS都提供容器服务管理后台。

这里就拿rancher开始吧,毕竟开源免费。值得一提的是,阿里云等的容器服务按量积分,master可托管,弄一两天低配node,一天也就几块。

在本地启动rancher容器:

sudo docker run -d --restart=unless-stopped -p 8080:80 -p 8443:443 rancher/rancher

打开 https://127.0.0.1 :8443平台,可以看到cluster, node, namespace, member等功能。

初试k8s,自顶向下的学习kubernetes

下面我们需要准备一个k8s cluster(集群),用minikube可以方便的部署一个本地集群。minikube是通过虚拟机创建集群,支持多种虚拟机,我这里用的virtualBox。启动很简单,一个命令 minikube start ,困难的是墙,下面贴一下配置代理的脚本:

function ministart() {
    export HTTP_PROXY=http://192.168.99.1:1089
    export HTTPS_PROXY=http://192.168.99.1:1089
    export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24

    minikube start \
    --docker-env=HTTP_PROXY=$HTTP_PROXY \
    --docker-env=HTTPS_PROXY=$HTTPS_PROXY \
    --docker-env=NO_PROXY=$NO_PROXY \
    --registry-mirror=https://registry.docker-cn.com
}

注意一下这个ip,不能使用127.0.0.1,因为虚拟机需要使用宿主的代理,虚拟机跟宿主机通讯是使用虚拟网卡创建的网段,默认宿主的ip为192.168.99.1,虚拟机是192.168.99.100。你还得把你的梯子监听的地址改改,127.0.0.1->0.0.0.0,监听所有网卡。同样rancher里的ip也应使用192.168.99.1,这个ip必需是所有集群都能访问到的,如果你是用docker自带的k8s集群,你可以用 ifconfig 找一个无线网或有线网的ip,反正不能使用127.0.0.1。

minikube下载一些必需镜像后,k8s集群就在虚拟机里启动了,可以使用 minikube ssh 登录到虚拟机里探查一番。下面我们在rancher里引入集群:

初试k8s,自顶向下的学习kubernetes

集群引入了之后我们来部署我们第一个app,一个echo-server:

初试k8s,自顶向下的学习kubernetes

等了一会儿k8s把容器部署好了,上面配置了暴露随机端口值是32192,我们访问192.168.99.100:32192就能看的echo-sever返回的信息了。我们觉得一个pod不够,点击+号,k8s会帮我们做水平扩容启动第二个pod,虽然minikube是但节点的,但是依靠容器的隔离特性,单节点照样能部署多个相同应用。

初试k8s,自顶向下的学习kubernetes

ok,下面自行探索一下rancher平台提供的一些页面,有workloads,load blance,service discory,pipline这些部署常用的,还提供报警、日志、监控、用户权限等功能,这就是一个完善的k8s管理平台了,到此你应该了解k8s大概有哪些用处了。

下面你需要再把k8s官方文档捡起来看一看,或者是一本系统介绍k8s的书籍,把你在rancher上用到的功能和k8s的概念对应起来,现在你才能抓住哪些是重点。

一些概念:

pod:k8s最小调度单位,可以是一个或多个容器。

service:对内或对外暴露k8s服务。

deployment:pods和replicaSets的控制器,通过deployment配置的规则来管理pods。

三个主要的命令行程序:

kubeadm:用了启动k8s集群。

kubelet:需要在所以节点上运行,处理集群内部通讯,类似agent。

kubectl:客户端工具,用户用它来给k8s集群发指令,类似ssh,可配置好秘钥远程访问,默认配置是 ~/.kube/config。

一些常用的命令:

kubectl get all -A
kubectl get namespaces
kubectl get svc
kubectl get pods
kubectl get deployments hello-world

# 暴露服务
kubectl expose deployment hello-world --type=NodePort --name=example-service


# logs
kubectl -n cattle-system logs -l app=cattle-cluster-agent

# exec
# -c --container
kubectl exec -it pod-name -c container-name -- /bin/bash

更多细节日后再慢慢探索,下面总结一下:

k8s专注于容器部署这一块,它不提供镜像打包(CICD),镜像储存(registry),也没有管理平台,更没有service mesh(服务通讯管控)。如果你要落地和完善,还有很多东西需要你去搞。那个rancher平台看起来很美好,但是实际用起来问题挺多,更适合在其上二次开发,你们团队是否具备这个实力?其实最靠谱的落地方案还是使用云服务,用钱来解决问题,先小规模用起来,摸熟了再研究其他姿势。

本文想表达的一个思想是:学习一个东西,你应该先搞清楚why(为什么用?有哪些应用场景?别人咋用的?),然后再研究how(怎么用),这样才能抓住重点,学起来事半功倍。


以上所述就是小编给大家介绍的《初试k8s,自顶向下的学习kubernetes》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

有的放矢

有的放矢

Nathan Furr、Paul Ahlstrom / 七印部落 / 华中科技大学出版社 / 2014-4-20 / 38.00元

创业需要大笔资金吗?自信的人适合创业吗?好点子究竟来自哪里?《有的放矢:NISI创业指南》的两位作者拥有多年创业与投资经验,收集了大量的一手案例和资料,提出有的放矢创业流程,帮助创业者规避创业风险,提高创业成功率。一起来看看 《有的放矢》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具