1. 合并所有的YAML文件

在Kubernetes配置中,管理多个YAML文件可能会变得繁琐。为了简化操作,你可以在.kube目录下创建一个名为merge.sh的脚本,用于合并这些YAML文件。

脚本内容:

#!/bin/bash

set -e
WORK_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
pushd "$WORK_DIR" 1>/dev/null 2>&1

# 遍历当前目录,获取所有YAML文件路径
yaml_paths=""
while IFS= read -r -d $'\0' file; do
  if [ -n "$yaml_paths" ]; then
    yaml_paths+=":$file"
  else
    yaml_paths="$file"
  fi
done < <(find "$(pwd)" -type f -name "*.yaml" -print0)

# 合并YAML文件并更新Kubeconfig
KUBECONFIG=$yaml_paths kubectl config view --flatten > ~/.kube/config

popd 1>/dev/null 2>&1

使用方法:

  1. 将上述脚本保存为merge.sh
  2. 在终端中运行bash merge.sh
  3. 使用kubectl config get-contexts命令验证合并后的上下文信息。
  4. 使用kubectl config use-context <context-name>命令切换上下文。

2. 通过Socks代理访问K8s集群

当Kubernetes集群位于内网环境中时,你可能需要通过SSH Socks代理来访问它。以下是如何设置和使用的步骤:

步骤1: 建立SSH Socks代理连接

ssh -D5000 -Ngf root@${jump_server_ip}

步骤2: 配置Kubeconfig以支持Socks代理

在你的Kubeconfig文件中,找到对应的集群配置部分,并添加proxy-url字段,如下所示:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: xxxxxx
    server: https://<内网IP>:6443
    proxy-url: socks5://localhost:5000 # 添加此行以通过Socks5代理访问远程集群

注意: 请确保将<内网IP>替换为实际的Kubernetes集群内部IP地址。另外,proxy-url字段需要根据你的实际Socks代理设置进行调整(例如端口号等)。完成配置后,你就可以通过Socks代理访问内网中的Kubernetes集群了。