首页 > 其他分享 >k8s外网访问

k8s外网访问

时间:2022-12-07 12:13:25浏览次数:71  
标签:kubernetes 访问 IP apiserver 外网 yaml 公网 kubeadm k8s

教程来源
通常情况下, kubernetes 集群是内网环境,如果希望通过本地访问这个集群,怎么办呢?大家想到的是 Kubeadm 在初始化的时候会为管理员生成一个 Kubeconfig 文件,把它下载下来 是不是就可以?事实证明这样不行, 因为这个集群是内网集群,Kubeconfig 文件 中 APIServer 的地址是内网 ip。解决方案很简单,把公网 ip 签到证书里面就可以,其中有 apiServerCertSANs 这个选项,只要把公网 IP 写到这里,再启动这个集群的时候,这个公网 ip 就会签到证书里。

1. 环境信息

  • 安装方式:kubeadm
  • 内网 IP:192.168.0.8
  • 外网 IP:139.198.19.37
  • 证书目录:/etc/kubernetes/pki
  • kubeadm 配置文件目录:/etc/kubernetes/kubeadm-config.yaml

2. 查看 apiserver 的证书包含的 ip, 进入到证书目录执行

cd /etc/kubernetes/pki openssl x509 -in apiserver.crt -noout -text

openssl x509 -in apiserver.crt -noout -text
Certificate:
    Data:
        ................
        Validity
            Not Before: Jun  5 02:26:44 2020 GMT
            Not After : Jun  5 02:26:44 2021 GMT
        ..................
        X509v3 extensions:
            ..........
            X509v3 Subject Alternative Name:
                IP Address:192.168.0.8
    .......

3. 添加公网 IP 到 apiserver

绑定的公网 ip 为 139.198.19.37 ,确保公网 ip 的防火墙已经打开 6443 端口

  • 3.1 登录到主节点,进入 /etc/kubernetes/ 目录下
  • 3.2 修改 kubeadm-config.yaml,找到 ClusterConfiguration 中的 certSANs (如无,在 apiServer 下添加这一配置),如下。添加刚才绑定的 139.198.19.37 到 certSANs 下,保存文件。
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
etcd:
  external:
    endpoints:
    - https://192.168.0.8:2379
apiServer:
  extraArgs:
    authorization-mode: Node,RBAC
  timeoutForControlPlane: 4m0s
  certSANs:
    - 192.168.0.8
    - 139.198.19.37

  • 3.3 执行如下命令更新 apiserver.crt apiserver.key 注意需要把之前 apiserver.crt apiserver.key 做备份,进入到 pki 目录下,执行如下指令做备份: mv apiserver.crt apiserver.crt-bak mv apiserver.key apiserver.key-bak 备份完之后,回到 /etc/kubernetes 目录下,执行公网 ip 添加到 apiserver 操作指令为: kubeadm init phase certs apiserver –config kubeadm-config.yaml
kubeadm init phase certs apiserver --config kubeadm-config.yaml
[certs] Generating "apiserver" certificate and key
[certs] apiserver serving cert is signed for DNS names [192.168.0.8  139.198.19.37]

4.重启apiserver

kubeadm部署的集群,apiserver 是以static pod形式部署的,将apiserver的yaml文件移出,再移回即可

$ cd /etc/kubernetes/manifests 
$ mv kube-apiserver.yaml  ../ 
稍等2s 
$ mv ../kube-apiserver.yaml . 

此时,apiserver就会自动重建。

5、刷新.kube/config

$ cp /etc/kubernetes/admin.conf ~/.kube/ 

注意:这里生成的 admin.conf 文件,server填写的依然是master的内网IP,如果需要放在集群外的客户端上使用,将这个IP改为master的外网IP即可。

标签:kubernetes,访问,IP,apiserver,外网,yaml,公网,kubeadm,k8s
From: https://www.cnblogs.com/Sleepy-Person/p/16962693.html

相关文章

  • k8s DockerFile中使用执行linux命令,安装字体
     #字体安装RUNapt-getupdate&&\apt-get-yinstallfontconfigxfonts-utils&&\mkdir-p/usr/share/fonts#复制字体ADDFonts.zip/usr/share/fonts/#wgethttps......
  • K8S相关基础知识
      相信很多人对他的名字都不陌生,但是很多人却把他和docker相关的关系分不清,也没有搞懂它到底是用来做什么的,能帮助我们解决哪些问题,今天我就给大家详细的讲一下。......
  • 有状态软件如何在 k8s 上快速扩容甚至自动扩容
    概述在传统的虚机/物理机环境里,如果我们想要对一个有状态应用扩容,我们需要做哪些步骤?申请虚机/物理机安装依赖下载安装包按规范配置主机名,hosts配置网络:包......
  • Java中重写为什么需要子类函数的访问权限不小于父类?
    Java方法重写子类函数的访问权限不能低于父类是为了满足面向对象设计中的里氏代换原则(LiskovSubstitutionPrincipleLSP)。那什么是LSP原则呢?它是指在软件系统中一......
  • ansible 清理k8s集群的node节点日志
    目录ansible清理k8s集群的node节点日志获取对应节点信息脚本删除各个节点的日志脚本ansible分发clear_docker_log.sh并做成计划任务ansible清理k8s集群的node节点日志......
  • k8s污点
    1、污点的类型介绍NoSchedule:表示k8s将不会将Pod调度到具有该污点的Node上PreferNoSchedule:表示k8s将尽量避免将Pod调度到具有该污点的Node上NoExecute:表示k8s将不......
  • 动态定时任务进行多数据源访问
    开发中有一个需求,需要进行多数据库链接访问,并进行动态定时任务分配。1.首先多数据库链接配置,使用mybatis-plus多数据源进行配置使用注解@DS("")进行多数据源切换使用。......
  • OpenClash 订阅信息正常,配置文件正常,为什么上不了国外网站?
    环境:ESXI虚拟X64硬件,系统OpenWrtX64版本。1、注意查看代理模式(自己在全局设置中设置的系统启动默认模式),尽量选择Rule模式;2、检查OpenWrt的NTP功能,确认NTP客户端功能为关......
  • 【深入理解java虚拟机】 - HotSpot虚拟机中对象的创建、内存布局和访问
    文章目录​​对象的创建​​​​对象的内存布局​​​​对象头​​​​实例数据​​​​对齐填充​​​​对象的访问定位​​​​句柄​​​​直接指针​​​​优缺点​​对......
  • K8S环境搭建
    环境参数:系统:ubuntu20.04k8s:1.25.3容器运行时:containerd关闭防火墙sudoufwdisable关闭swap临时关闭:swapoff-a永久关闭:sed-i'/swap/s/^/#/'/etc/fst......