【运维】通过gotty实现网页代理访问服务器及K8S容器操作实践
Gotty 是Golang编写的可以方便的共享系统终端为web应用,是一个灵活强大的通过web访问终端的工具。本文将主要通过搭建Gotty实现对K8S容器的访问操作,开发如果想要正常的进行容器访问以及测试环境代码调试,最好是搭建一套与运维环境隔离的应用。方案很多,这里主要用到Gotty进行代理。https://github.com/yudai/gotty为其主页。下面讲解具体实现。
安装Gotty
安装Go环境,如果已经存在则忽略
# 安装基本的go语言环境
wget https://dl.google.com/go/go1.13.8.linux-amd64.tar.gz
tar zxvf go1.13.8.linux-amd64.tar.gz -C /usr/local/
mkdir /usr/local/gocode
vim /etc/profile #末尾放入下面三行
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gocode
export PATH=$PATH:${JAVA_HOME}/bin:$GOROOT/bin
source /etc/profile
go version #检查go是否安装成功
安装gotty环境
go get github.com/yudai/gotty
mkdir /usr/local/gocode/src/github.com/yudai -p
cd /usr/local/gocode/src/
go install github.com/yudai/gotty
cd /usr/local/gocode/bin/
启动Gotty服务代理
# 启动gotty 用8080端口,然后设置访问用户名和密码,并代理kubectl 进行启动
./gotty -p 8080 -c yourUser:yourPwd -w --permit-arguments kubectl >/dev/null 2>&1 &
用浏览器进行访问测试
主要是通过下面的拼接生成命令 kubectl exec -it K8s-pod1-65369488ff-z9vpc -n namespace bash其中K8s-pod1-65369488ff-z9vpc是pod名称,namespace 是命名空间名称,根据具体情况调整。
http://你的服务器IP:8080/?arg=exec&arg=-it&arg=K8s-pod1-65369488ff-z9vpc&arg=-n&arg=namespace&arg=bash
获取Pod列表
上面讲解了如何搭建Gotty环境,并给出了进入容器的示范,但是还有一个问题就是,容器名称从哪里来,必须先有一个名称列表,才能点击进入。
取出容器列表核心命令
kubectl get pods --namespace=yourNameSpace

开发Pod展示列表
上面取出了容器列表,需要把这个列表显示在网页上面,这里简单通过Python Flask启动一个Web服务。如果没有安装Flask,可以使用命令pip install flask进行安装,创建一个文件main.py,内容如下。
from flask import Flask
import os
app = Flask(__name__)
@app.route('/namespace/k8s/pods')
def hello_world():
cmd = os.popen("kubectl get pods --namespace=namespace | awk '{print $1}'")
pods = cmd.read().split("\n")
i = 0
resStr = ""
for pod in pods:
if i > 0:
resStr = resStr + "<a target='_blank' href='http://你的服务器IP:8080/?arg=exec&arg=-it&arg="+ pod +"&arg=-n&arg=namespace&arg=bash'>" + pod + "</a>" + "<br>"
i = i + 1
print(resStr)
return resStr
if __name__ == '__main__':
app.run()
然后在搞一个启动脚本 restart.sh。
ps -elf | grep 'main.py'|awk '{print $4}' | xargs kill -9
python main.py >/dev/null 2>&1 &
如果有nginx,也可以进行一下nginx代理:cat /etc/nginx/sites-enabled/pod.conf
server {
listen 80;
server_name your server name;
location ~* ^/namespace {
proxy_pass http://localhost:5000;
}
location / {
proxy_pass http://localhost:8080;
}
}
访问容器列表
http://你的服务器域名/namespace/k8s/pods即开发访问此页面可以进入容器代码调试。如果需要授权验证,就输入gotty启动时候设置的密码。
今天的内容就分享到这里,喜欢的话,给个关注,更多精彩,即将呈现。
【运维】通过gotty实现网页代理访问服务器及K8S容器操作实践的更多相关文章
- 《前端运维》二、Nginx--4代理、负载均衡与其他
一.代理服务 比较容易理解吧,简单来说.客户端访问服务器并不是直接访问的,而是通过中间代理服务器,代理服务器再去访问服务器.就像一个中转站一样,无论什么,只要从客户端到服务器,你就要通过我. 一)正向 ...
- Linux运维面试题之--网页打开缓慢如何优化
服务器负载过高或者网页打开缓慢,简单说说你的优化思路 ? 首先我们要发现问题的过程,通过操作系统,数据库,程序设计,硬件角度四个维度找到问题所在 找到瓶颈点的位置 制定好优化方案,形成处理问题的体系 ...
- 系统运维|SqlServer2008|数据库日志文件过大需要清理的操作攻略
摘要: 1.执行SQL语句改成“简单模式” 2.收缩数据库 3.执行SQL语句改回“完全模式” 原文链接: http://www.lookdaima.com/WebForms/WebPages/B ...
- Python自动化运维工具fabric的安装
使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...
- 从一到万的运维之路,说一说VM/Docker/Kubernetes/ServiceMesh
摘要:本文从单机真机运营的历史讲起,逐步介绍虚拟化.容器化.Docker.Kubernetes.ServiceMesh的发展历程.并重点介绍了容器化阶段之后,各项重点技术的安装.使用.运维知识.可以说 ...
- Python自动化运维工具-Fabric部署及使用总结
使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...
- 运维堡垒机----Gateone
简介: 运维堡垒机的理念起源于跳板机.2000年左右,高端行业用户为了对运维人员的远程登录进行集中管理,会在机房里部署跳板机.跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上, ...
- autohotkey在运维中的应用
AutoHotkey是一个自由.开源的宏生成器和自动化软件工具,它让用户能够自动执行重复性任务.AutoHotkey可以修改任何应用程序的用户界面(例如,把默认的Windows按键控制命令替 ...
- 中型企业的IT运维策略
如何建设一支能够解决问题.创造价值.有活力的.不断进取的IT运维团队,并带领这支团队?充分发挥这个团队的优势力量,是运维业务有效开展的关 键.运维策略是直接体现运维业务的经济价值所在.好的运维措施.方 ...
- saltstack运维软件
一.saltstack介绍 1.介绍 SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境. SaltStack是一个服务器基础架构集中化管理 ...
随机推荐
- Chai 3D之创建项目
推荐:将 NSDT场景编辑器 加入你的3D开发工具链 1.构建应用目录 我们将设置使用 CHAI3D 构建应用程序所需的基本目录结构和文件.根据您可能要使用的显示器或 GUI 库,为 FreeGL ...
- VSCode 自定义代码片段
Ctrl+Shift+P 输入"代码片段:配置用户代码片段": 搜索你想要设置的语言代码片段,比如,我设置 .vue 文件的代码片段,选择 vue.json: 可以配置多个代码片段 ...
- Qt-FFmpeg开发-视频播放【软解码 + OpenGL显示RGB图像】(3)
Qt-FFmpeg开发-视频播放[软解码 + OpenGL显示RGB图像] 目录 Qt-FFmpeg开发-视频播放[软解码 + OpenGL显示RGB图像] 1.概述 2.实现效果 3.FFmpeg软 ...
- LeetCode-689 三个无重叠子数组的最大和
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-sum-of-3-non-overlapping-subarrays 题目描述 ...
- [转载]危险操作一追到底--Linux的历史记录
转自:https://zhuanlan.zhihu.com/p/524921170 危险操作一追到底--Linux的历史记录 KellanFan 为了更好的自己 概述 在Linux下使用his ...
- web实践学习2
20201303张奕博 2023.1.25 创建浮岛 如以下 两幅图所示,整个浮岛造型是一个四棱椎,整体分为四部分,顶部是由地面和河流构成的四方体.底部三块是倒置的三角.生成这些三维模型的其实也并没有 ...
- 采集存储计算处理卡设计原理图:619-基于6U VPX的双FMC ZU19EG 采集存储计算处理卡
619-基于6U VPX的双FMC ZU19EG 采集存储计算处理卡 基于6U VPX的双FMC ZU19EG 采集存储计算处理卡 一.板卡概述 该板卡是采集.存储.计算.管理一体的高集成度.加固 ...
- Linux系统开机自启动jar包程序
一.编写jenkins开机自启动脚本 vim /etc/rc.d/init.d/jenkins.sh #!/bin/bash export JAVA_HOME=/usr/lib/jvm/java ex ...
- Linux Qt编译时出现has modification time int the future的解决方法
问题场景:我在window系统上合并完代码后,将代码通过TF卡拖到了Debian系统的开发板子上(为什么我不用Winscp或者xhttp传呢?因为网线被同事拿走了...),然后就报这个错. 网上查阅资 ...
- idea 使用JRebel 报1099错误
idea 使用JRebel 报1099错误 以为是端口占用 后面搜了一下 发现是编码问题 windows用户名是中文名 添加以下代码即可 -Dfile.encoding=UTF-8 -Djava.aw ...