wsl搭建k8s集群补充内容

云中志

共 3025字,需浏览 7分钟

 ·

2021-06-27 21:37

前言

昨天我们分享了如何在wsl上搭建k8s集群,但是由于内容多,昨天时间也比较紧促,所以好多知识点并没有覆盖到,考虑到好多小伙伴可能也是第一次使用k8s,我们今天把一些基础知识再补充下,一方面是为了让大家清楚每一步操作的目的,清楚每一个命令的作用,另外一方面就是我自己确实也需要把这这两天积累的基础知识整理下,理清楚思路,便于知识积累。

k8s补充知识

查看基本信息

kubectl get option optionName [-n][-namespace] [namespaceName]

这个命令的作用是获取option的信息,option可以是nodepodservice,在获取podservice的时候,是需要通过-namespace指定命名空间的;

servicenamespace可以写成简写的:

kubectl svc -n 命名空间名称

如果要获取具体的option,可以指定optionName

如果要获取所有命名空间下的svc或者pod,可以通过:

kubectl get svc -A
# 或者
kubectl get pod -A

我们通常访问的是service,所以最常用的是kubectl get svc -n kubernetes-dashboard通过这个命令,我们可以查看服务对外提供的端口。

查看详细信息

kubectl describe option [-n][-namespace] [namespaceName]

这里的参数和前面kubectl get是一样的,只是describe获取到的信息更详细,包括日志信息,所以在实际使用过程中,我们经常用这个命令查看日志信息:

创建服务

kubectl apply -f 你的yaml文件

比如创建kuboard

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

上面这种方式是通过线上yaml文件,你也可以用本地yaml文件创建:

kubectl apply -f kuboard/kuboard-v3.yaml

yaml文件结构如下:

对于k8syaml文件,我目前只了解常用的节点的作用,还不知道如何编写一个yaml文件,但是如果你用了kuboard这样的管理工具之后,是不需要自己编写yaml文件的。

删除服务

删除服务也很简单,只需要把上面的命令改成delete即可:

kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

如果没有yaml文件,删除起来确实繁琐了很多

k8s代理

昨天我们访问kubernetes-dashboard就是通过代理的方式,启用代理的方式也很简单,直接执行下面的命令就好了:

kubectl proxy

k8s代理启动后,我们就可以通过代理服务访问我们k8s里面的服务了,访问地址如下:

http://localhost:8001/api/v1/namespaces/[Namespace]/services/[Name]:[Port]/proxy/

我们把将地址中的[namespace][name][port]替换成我们自己的服务就可以了。我们可以通过describe命令获取这些信息:

所以上面图片中的服务,访问地址是这样的:

http://localhost:8001/api/v1/namespaces/kuboard/services/kuboard-v3:80/proxy/

这个服务也是一个控制台,这个控制台是国人开发的,很多公司线上环境就用的这款管理工具,我们公司也是刚刚切换到k8s,也用的是kuboard,从体验上来说,确实比官方的控制台好用,可能也是我用官方的管理工具时间短。

关于kuboard的使用,今天我们就不分享了,因为kuboard本身不支持代理访问,虽然能登陆上,但是后面访问的时候,会报404的错误:

主要还是地址的问题,我们代理之后服务的根目录应该是:

http://localhost:8001/api/v1/namespaces/kuboard/services/kuboard-v3:80/proxy/服务资源

但是kuboard要求的服务根目录是:

http://localhost:8001/服务资源

所以会报404错误,后面我们解决了windows外网直接访问wsl中的k8s集群服务的问题,再来分享。

关于k8s

现阶段k8s应该算是云原生比较主流的技术,得益于Go语言和Linux加持,k8s确实比docker更适合企业大型应用的集群部署,因为k8s有着docker无法替代的功能,比如k8s-dns,虽然k8s要依赖docker进行镜像管理,但是比docker更庞大。

这里有一个形象的例子,可以说明我对k8sdocker的理解。docker中文的意思是码头工人,我们的系统镜像就好比货物,所以docker可以帮我们需要的系统镜像(货物),装卸到我们需要的地方,就类似于搬运工人;k8s就相当于自动化港口,一个是规模更大,可以停放更大船舶,更多的货物;一个是自动化程度更高,集成程度也更高,我们不需要像搬运工人再去手动(docker pull)搬运货物(系统镜像),只需要在k8s控制台操作一下,货物就会自动装卸,然后还可以实时监测各个系统状况,不仅效率高,而且容错机制还好,如果某个节点无响应或者响应数据不正常,k8s会根据重启机制,重启我们的pod节点,从这一点上说,k8s确实比docker优秀。

当然,任何事物都不可能完美,虽然k8s看起来无懈可击,但是在实际使用过程中,你可能会遇到各种各样的坑,比如如果你的服务启动时间比较长,k8s就以为你的服务假死,然后重启服务,这样你的服务会一直被重启,而且一直起不来。当然,这样说明确实k8s是为微服务量身打造的,因为如果你的服务启动时间长,就说明你的服务还不够微。

总之,k8s虽然有一些缺点,但是和它的优点相比,那确实比较优秀了,而且随着不断的深入了解,你会发现k8s很多地方设计的牛逼,对开发人员确实很友好。最后,感兴趣的小伙伴,好好去把玩下吧,我觉得你会喜欢上这个东东的……

总结

今天我们补充了k8s的一些常用命令,通过这些命令,我们可以管理我们k8s集群下的服务,查看服务的状态、日志等,虽然作为开发人员我们真正要用好的是像kuboard这样的工具,因为日常工作中我们一般并不会拥有kubectl控制台的权限,但是我还是建议各位小伙伴要学好k8s的基础知识,只有如此你才能更好地理解k8s的运行原理,才能站在更高的高度看问题,你说呢?

- END -


浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报