本地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来配置。
第一步:检查
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