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

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

内容简介:之前就玩过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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Pro JavaScript Techniques

Pro JavaScript Techniques

John Resig / Apress / 2006-12-13 / USD 44.99

Pro JavaScript Techniques is the ultimate JavaScript book for the modern web developer. It provides everything you need to know about modern JavaScript, and shows what JavaScript can do for your web s......一起来看看 《Pro JavaScript Techniques》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具