配置云主机连接到阿里云K8s

阿里云生产环境的Jenkins在构建完成镜像, 发布服务到K8s集群的过程中报错error: You must be logged in to the server, 记录下重新配置授权的过程

1
2
3
4
5
sed -i '/image:/s/v\([0-9].*\)/v10/' /home/hkzc_k8s_jiqun/yaml/pro-owner-scms-server.yaml
/usr/local/bin/kubectl config use-context kubernetes-hkzc
Switched to context "kubernetes-hkzc".
/usr/local/bin/kubectl apply -f /home/hkzc_k8s_jiqun/yaml/pro-owner-scms-server.yaml
error: You must be logged in to the server (the server has asked for the client to provide credentials)

预准备——检查是否安装kubectl

在Shell中运行kubectl version命令, 检查工具是否安装, 如果没有, 参考在 Linux 系统中安装并设置 kubectl | Kubernetes

阿里云的配置

完整文档可以参考通过kubectl连接Kubernetes集群

按照官网文档说明, K8s集群的连接有公网和私网两种连接方式, 我们Jenkins所在的ECS和K8s集群在同一个VPC内, 所以这里选择私网的连接方式

ACK Serverless集群提供了两种集群凭证(即KubeConfig), 分别用于公网访问和私网访问

  1. 登录容器服务管理控制台, 在左侧导航栏选择集群

  2. 集群列表页面, 单击目标集群名称, 然后在左侧导航栏, 选择集群信息

  3. 集群信息页面, 单击连接信息页签, 根据需要选择公网或私网访问凭证

容器服务ACK-集群列表

集群的连接信息

复制KubeConfig中的信息, 将其中的内容覆盖到$HOME/.kube/config文件里面

1
2
3
cd $HOME/.kube/
vim config
# 注意集群凭证的过期时间

配置完成后, 验证配置

1
2
kubectl get namespace
kubectl config get-contexts

验证连接

使用自定义的content

Jenkins构建脚本中发布镜像到K8s集群的时候, 使用了自定义的content名称, 直接复制阿里云的配置文件后需要修改集群名称, 不然会遇到报错

1
2
/usr/local/bin/kubectl config use-context kubernetes-hkzc
error: no context exists with the name: "kubernetes-hkzc"

还是修改$HOME/.kube/config文件, 修改namecurrent-content, 修改成kubernetes-hkzc即可

编辑集群名称

多config的配置

参考文档本地连接远程阿里云K8S-多config配置&合成config事例