导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:356
阅读量:1648388
访问量:205666
至今:
×
云标签 标签球>>
云标签 - Su的技术博客
Tags : 运维,容器,K8S,Kubernetes发表时间: 2021-11-11 23:41:12
 ruby 八戒技术团队

说起运维届的妹子,不得不分享腾讯的咖啡党大神抛出的这句:“妹子的比例,反映了运维团队自动化和智能化的程度”。

图片

要知道我们八戒运维的自(Mei)动(zi)化(de)智(bi)能(li)化情况,还真有一个重大经历分享。

记得“祖传K8S”风行的时候,我们运维的容器云小伙伴们都在电脑上贴上了A4纸打印出来的“祖传K8S”这几个大字。

图片

没想到二师兄有一天走到了我们面前,并说到“你们这几个字有意思”。收到这意外惊喜的同时,我们运维童鞋立即给二师兄分享了这几个字的由来,什么是k8s,以及k8s可以使我们公司应用的部署和运维更加自动化等。

二师兄看到在座的运维小伙伴们,又笑着说:“没想到我们运维也还有不少女同胞“。其实,大神的这句经典语录就是最好的答案。

图片

如果你对k8s还没有那么熟悉,推荐你先看下,我们技术人带着满满的爱给家人分享技术知识的插画,《你闺女也能看懂的插画版 Kubernetes 指南》以及官方最新插画跟随Phippy一起通过有趣的方式了解 Kubernetes看完了这些插画,你是不是都有信心讲给你家小公主听了。

图片

今天,就由一枚运维妹子为您分享,使用k8s最常见的一个操作:进入容器的优雅姿势。

首先,为了再次确认我们技术大大们进入容器的需求,妹子就先带着问题去走访下各路大神。


说说你为什么喜欢进容器?


后端开发大大是这样回复的:

图片

前端开发大大的回答是:

图片

运维大大们的答案又是这样的:

图片

图片

看到大家纷纷表达出了对进入容器的爱,相信你一定不满足于用用而已,知其然并知其所以然才是你的最终目的吧。

好的,让我们先了解下业界有哪些方式进入容器?


业界常见进入容器的方式

1、直接使用Kubernetes进入容器

(1)kubectl exec 命令行界面

使用 -i 和 -t 参数进入容器的交互式 shell

kubectl exec -it <podName> -c <containerName> -n <namespace> -- shell comand

(2)部署kubernetes dashboard可视化插件

图片

2、看Rancher如何进入容器

图片

3、使用OpenShift进入容器

(1)OpenShift Web控制台

OpenShift 的交互式Web控制台上的Terminal

图片

(2)OpenShift oc命令行界面

OpenShift oc命令可以从终端与容器进行交互

  • oc rsh <containerName> --container app

只是调研了一些常见的方式,还有哪些方式,欢迎大佬们帮忙在留言区补充,蟹蟹٩('ω')و

根据我们的调研结果,你一定想知道,八戒技术究竟施展了什么魔力,让我们的技术大大们那么钟爱于进入容器?


看八戒怎么优雅地进入容器?

1、与CMDB关联

直接通过浏览器,登录CMDB,找到想要进入的项目容器,直接点击进入“控制台”,即可进入容器,操作简单方便。

图片

图片

2、与项目关联

通过权限来控制用户进入相应容器的管理能力。用户是从项目工程的维度,进入对应环境的对应容器的,项目负责人只需(能)进入自己项目的容器哦。

图片

如果您恰巧和我们一样,想要结合项目开放给开发人员使用,那你一定想要知道这个简单操作背后的逻辑!


揭秘猪八戒网进入容器背后的逻辑

说到容器,就要搬出代表我们八戒DevOps 容器云相关产品Sahaba(来自阿拉伯语“云”的发音سحابة,读音为 sahaba ),它的目标是帮助开发测试和运维人员更有效率的接入容器云。

今天为大家隆重介绍的就是web端进入容器的 Sahaba Exec这尊大神。

Sahaba Exec 提供了从浏览器进入容器的能力。它由两部分组成:

  • Sahaba Exec 提供 web terminal

  • Sahaba Cuckoo(布谷鸟) 提供 token

一图让你看懂八戒进入容器背后的逻辑

图片

再送上一个简单的流程图帮你再次清晰下思路

图片

使用的步骤如下

  • 获取token
  • 拼接ur
  • l进入容器

步骤一:获取 token

通过使用restful API的 post方法调用获取权限认证的接口方法获取。

接口:

  • POST cuckoo-domain/route

参数:

属性

类型

必需

位置

描述

可选值

authorization

string

yes

Header

调用接口所需的key


content-type

string

yes

Header


application/json

name

string

yes

Body

容器的名称,推荐,可以更快速的获取token


region

string

yes

Body

容器所在的机房, 如果为空,则根据 env 的值来定

test,testing,product

env

string

no

Body

容器的环境,用来确定region,如果region 参数不为空,则会忽略这个参数


user

string

no

Body

进入容器的用户

guest,root (default: guest)

例子:

  • $ curl -X POST \ https://cuckoo-domain/route \ -H 'authorization: <secret-key>' \ -H 'content-type: application/json' \ -d '{ "name": "<必须> podname ", "env": "<可选> such as dev.test, dev.perf, testing ", "region": "<可选> ", "user": "<可选> guest or root "}'

返回:

  • Status Code: 200Body:{  "token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

步骤二:拼接 URL

使用上一步获取到的 token,将其追加到 exec的接口地址,即:

  • https://exec-domain/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

步骤三:进入容器

使用浏览器打开上一步拼接好的 url 即可。

图片

注意:返回进入容器的URL地址有且只能使用一次,刷新或重新点击的情况下均会失效。

...阅读原文
推荐文章