incloud开发文档 5.1.0 Help

本地K8s配置技巧

本章内容主要是做为开发人员在本地开发环境中使用K8s的一些技巧,所谓本地配置就是在本地配置K8S线上的config, 这样就可以在本地使用K8S的命令行工具kubectl来操作线上的K8S集群。

这是非常有必要的,假如你有权限连接到你公司的线上K8S集群,会极大方便你的运维和调试。

linux和macos的配置

如果是linux client服务器(即通过kubectl连接k8s集群的机器,如:我们的构建服务器)和macos,那么配置非常简单。

首先,打开你的用户的 .bashrc 或 .bash_profile 文件,如果你安装了zsh,那么可以打开.zshrc文件,然后添加如下内容:

# Alias for kubectl alias kc='kubectl' # Function for getting pods get_kubectl_pods() { if [ -z "$1" ]; then echo "pls add namespace params. ex: kco incloud5" else kubectl get pods -n "$1" fi } # Function for getting services get_kubectl_svcs() { if [ -z "$1" ]; then echo "pls add namespace params. ex: kcs incloud5" else kubectl get svc -n "$1" fi } # Function for getting logs get_kubectl_logs() { if [ -z "$1" ]; then echo "pls enter a valid Pod name. ex: kcl mysql-0 incloud5" elif [ -z "$2" ]; then echo "pls enter a valid Namespace. ex: kcl mysql-0 incloud5" else kubectl logs -f "$1" -n "$2" fi } # Function for describing pods get_kubectl_describe() { if [ -z "$1" ]; then echo "pls enter a valid Pod name. ex: kcd mysql-0 incloud5" elif [ -z "$2" ]; then echo "pls enter a valid Namespace. ex: kcd mysql-0 incloud5" else kubectl describe po "$1" -n "$2" fi } # Aliases for the functions alias kco='get_kubectl_pods' alias kcs='get_kubectl_svcs' alias kcl='get_kubectl_logs' alias kcd='get_kubectl_describe'

然后,执行如下命令使配置生效:

# 在 Linux 上 source ~/.bashrc # 在 macOS 上 source ~/.bash_profile

这样,你就可以在本地使用kubectl命令来操作线上的K8S集群了,比如:

kco incloud5 kcs incloud5 kcl mysql-0 incloud5 kcd mysql-0 incloud5 ...

如果你不带命名空间或者Pod名称,那么会提示你输入正确的参数。

windows的配置

windows配置会稍微麻烦一些,这里介绍使用windows自带的Windows PowerShell来配置。

第一步:检查 PROFILE 变量指向的路径:

Write-Host $PROFILE

第二步:验证路径是否存在:如果路径看起来不正确,或者该路径在文件系统中实际上不存在,你需要创建该路径。首先,你可以检查该目录是否存在:

Test-Path (Split-Path $PROFILE)

如果返回 False,那么你需要创建这个目录:

New-Item -Type Directory -Path (Split-Path $PROFILE) -Force

一旦确认目录存在,你可以尝试运行:

notepad $PROFILE

第一次运行时,可能会提示你是否创建文件,选择是,然后会打开一个空的notepad,你选择是就行了。 最好你使用管理员身份打开powershell,然后在打开的notepad中添加如下内容:

Set-Alias -Name kc -Value kubectl function Get-KubectlPods { param( [string]$Namespace ) if (-not $Namespace) { Write-Host "pls add namespace params. ex:kco incloud5" } else { kubectl get pods -n $Namespace } } function Get-KubectlSvcs { param( [string]$Namespace ) if (-not $Namespace) { Write-Host "pls add namespace params. ex:kcs incloud5" } else { kubectl get svc -n $Namespace } } function Get-KubectlLogs { param( [string]$PodName, [string]$Namespace ) if (-not $PodName) { Write-Host "pls enter a valid Pod name. ex:kcl mysql-0 incloud5" return } if (-not $Namespace) { Write-Host "pls enter a valid Namespace. ex:kcl mysql-0 incloud5" return } kubectl logs -f $PodName -n $Namespace } function Get-KubectlDescribe { param( [string]$PodName, [string]$Namespace ) if (-not $PodName) { Write-Host "pls enter a valid Pod name. ex:kcd mysql-0 incloud5" return } if (-not $Namespace) { Write-Host "pls enter a valid Namespace. ex:kcd mysql-0 incloud5" return } kubectl describe po $PodName -n $Namespace } Set-Alias -Name kco -Value Get-KubectlPods Set-Alias -Name kcs -Value Get-KubectlSvcs Set-Alias -Name kcl -Value Get-KubectlLogs Set-Alias -Name kcd -Value Get-KubectlDescribe
Last modified: 20 一月 2025