通过kubectl连接Kubernetes集群,附shell命令

文章目录

  • 1. 前言
  • 2. 获取鉴权信息
    • 2.1 安装kubectl
    • 2.2 配置凭证
  • 3. 端口转发命令
  • 4. 附
    • 4.1 端口转发实际命令
    • 4.2 更易用的小脚本

1. 前言

我所在团队一样,测试环境的MySQL在阿里云的Kubernetes集群上,但是又没有映射一个固定地址来让我们访问。
所以每次连接测试环境,需要本地用kubectl端口转发MySQL 3306到本地才能访问。

如果你所在的团队和我一样,那么这篇文章或许会给你一定的帮助

阿里云官方说明文档
https://help.aliyun.com/document_detail/86494.html

2. 获取鉴权信息

2.1 安装kubectl

# 安装kubectl (Mac平台)
brew install kubectl # 校验是否安装成功
kubectl version --client

2.2 配置凭证

  1. 访问阿里云后台

https://homenew.console.aliyun.com/

  1. 进入容器服务页

左上角橙色菜单按钮 -> 产品与服务 -> 容器服务kubernetes版
在这里插入图片描述

  1. 进入一台集群详情页

左侧菜单 -> 集群 -> 集群 -> k8s(集群名称)
在这里插入图片描述

  1. 复制凭证

页面最下方有2个tab,在kubeConfig(公网访问)选项卡中,点击复制
在这里插入图片描述

  1. 本地创建凭证文件

创建一个~/.kube/config文件,把上一步复制的内容贴入后保存

# 创建本地配置文件
mkdir ~/.kube/config

3. 端口转发命令

  1. 端口转发命令可以参考这一条,不用每次都去获取实例名
#映射mysql端口
kubectl -n dev port-forward $(kubectl -n dev get pods | grep ^mysql | grep Running | awk 'NR==1{print $1}') 3306:3306

在这里插入图片描述
2. 然后db客户端访问本地3306端口即可

在这里插入图片描述

以上就是全部内容了,后面的内容可以不看


4. 附

4.1 端口转发实际命令

第3节中的命令实际是自动去获取了实例名,端口转发实际命令如下

命令: kubectl -n 命名空间 port-forward 应用实例名 3306:3306

kubectl -n dev port-forward mysql-dev-665abcddf7-rvssx 3306:3306

命令空间可以从这个页面获取:
左侧菜单 -> 应用 -> 无/有状态 -> 命名空间
在这里插入图片描述
使用实例名可以从这李获取:

同一页面,右侧搜索应用名“mysql”,点进去,页面下方就是实例名
在这里插入图片描述

4.2 更易用的小脚本

  1. 保存以下内容到本地 mysql.sh
#!bin/sh#默认配置
env=dev
port=3306env_list=("dev" "dev-01" "dev-02" "dev-03" "dev-05")if [ -n "$1" ]; thenenv=$1if [[ "$1" = "help" || "$1" = "h" ]]; thenecho "MySQL Environment List"for (( i=0; i < ${#env_list[@]}; i++ ))do 			printf "%-10s %-2s %-10s\n" "${env_list[i]}" "-" `expr ${i} + 1`doneexit 0fiif [[ $1 -ge 1 && $1 -le ${#env_list[@]} ]]; thenenv=${env_list[$1 - 1]}fi
fiif [ -n "$2" ]; thenport=$2
fiecho $env $port#映射mysql端口
kubectl -n $env port-forward $(kubectl -n $env get pods | grep ^mysql | grep Running | awk 'NR==1{print $1}') $port:3306
  1. 使用方式
# 默认以 dev 3306启动
sh mysql.sh# 指定其他环境与端口号
sh mysql.sh dev-01 3307# 查看帮助文档
sh mysql.sh h# 指定快捷键对应的环境
sh mysql.sh 1

在这里插入图片描述