• kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)


    一、前言

    在这里插入图片描述
    现如今是一个万物皆上云 的时代,各种云层出不穷,但是大多数云的容器管理平台基本都是基于kubernetes的。
    kubernetes是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器—-Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:

    • 自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器
    • 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整
    • 服务发现:服务可以通过自动发现的形式找到它所依赖的服务
    • 负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡
    • 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本
    • 存储编排:可以根据容器自身的需求自动创建存储
      各种云平台纵使有很多优点,但是有一个很不方便点,就是开发人员无法在本机电脑上查看到pod日志,还需要通过登录云平台,然后再登录到k8s集群中才能查看具体的某一个pod的日志,非常不方便。这时候 k8s 给我们提供了一个 命令行工具 (kubectl)kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。接下来我将讲解如何在windows电脑通过 kubectl进行远程控制k8s的多个集群。

    二、windows上安装kubectl和mobaxterm

    2.1 准备安装包

    kubectl 用于远程控制k8s集群
    安装包下载地址:
    https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/
    在这里插入图片描述

    mobaxterm 用于在windows 使用各种linux上的便捷命令。这里使用free的版本就够用了。
    安装包下载地址
    https://mobaxterm.mobatek.net/download.html
    在这里插入图片描述

    网速不好的也可以直接从这下载

    kubectl1.28.3+mobaxtermv2.34.zip

    https://download.csdn.net/download/weter_drop/88539291

    2.2 安装kubectl

    kubectl 用于远程控制k8s集群,为了方便使用 我们需要配置一下 系统的环境变量,比如在我的电脑里我就把 kubectl 放到了 C:\my-soft\k8s下面。
    在这里插入图片描述

    添加一个系统变量 k8s ,然后再追加到 path变量中。

    在这里插入图片描述
    在这里插入图片描述
    保存环境变量以后,打开一个cmd窗口:
    输入如下命令,如果能看到版本信息,既代表安装成功。

    kubectl version
    
    • 1

    在这里插入图片描述

    2.3 链接k8s集群

    默认情况下 kubectl的配置文件会在 C:\Users\xxxxxxx.kube (xxxxxxx是你当前的登录用户名)文件夹下,如果没有新建一个 **condfig ** 文件即可,不需要任何后缀名。
    至于config的配置内容可以找运维配置,或者去找一台安装了kubectl 能够连接上 k8s的服务器,然后拷贝一下 config文件即可。
    通过这个命令可以找到 .kube 文件夹。

    cd ~ && ls -a | grep .kube
    
    • 1

    配置文件的内容一般如下:

    apiVersion: v1
    clusters:
    - cluster:
        insecure-skip-tls-verify: true
        # apiserver的地址,这个必须配对
        server: https://127.0.0.1:6443
      name: k8s-dev
    contexts:
    - context:
        cluster: k8s-dev
        user: k8s-dev-user
      name: k8s-dev  
    # 当前上下文  
    current-context: k8s-dev
    kind: Config
    preferences: {}
    users:
    - name: k8s-dev-user
      user:
        token: a536xxxxxxxxxxxxxxxxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    输入以下命令即可查看当前集群的每一个node情况。

    kubectl  get nodes -o wide
    
    • 1

    在这里插入图片描述

    2.4 查看某一个pod的容器日志

    由于windows的并不具有linux上一些完整的命令比如我们常用的 grep命令 ls 命令 等等,这里推荐使用 mobaxterm 的本地终端进行使用。
    MobaXterm是一款功能强大的多功能远程计算机管理软件,可以在Windows操作系统下运行,支持SSH、Telnet、RDP、VNC等协议,同时还支持X11服务器和X11转发等功能。以下是MobaXterm的一些特点:

    终端模拟器:MobaXterm提供了一个功能强大的终端模拟器,支持SSH、Telnet、RDP等协议,可以连接到远程计算机进行管理和操作。

    X11服务器和X11转发:MobaXterm内置了X11服务器和X11转发功能,可以在Windows操作系统下运行Linux和Unix应用程序,同时还支持多窗口和多标签等特性。

    文件传输:MobaXterm支持SCP、SFTP和FTP等协议,可以传输文件到远程计算机或从远程计算机下载文件。
    等等很多特性。
    在这里插入图片描述

    首先我们需要找出容器的 完整名字

    1. 如果不知道容器在哪个命名空间
     kubectl get pod --all-namespaces  |  grep 容器名字
    
    • 1
    1. 如果不知道容器所在的命名空间
     kubectl get pod -n $NAMESPACE  |  grep 容器名字
    
    • 1

    比如我们要找一个pod名中包含 network 的服务。
    可以输入:

     kubectl get pod --all-namespaces | grep network
    
    • 1

    在这里插入图片描述
    假设第一个pod的name是 xxxx-network-0 ,我们想看这个pod的最近500条日志记录就可以使用如下命名:

    kubectl  -n default logs -f xxx-network-0 --tail 500
    
    • 1

    其他的一些日志查看命令也可以参考:

    k8s导出日志方法
    https://blog.csdn.net/chen497147884/article/details/128452650

    2.5 切换context 上下文配置,实现在多个k8s集群间动态切换

    在日常开发运维过程中我们一般会有多个k8s集群,比如dev test prod等等,当您从一个集群切换到另一个集群时,管理这样的配置文件很快就会变得很麻烦。这就是 Kubernetes context 发挥作用的地方。您可以将 Kubernetes 上下文视为一种快捷方式,让您可以方便地访问集群、用户和命名空间参数。

    创建多个集群上下文

    apiVersion: v1
    clusters:
      - cluster:
          insecure-skip-tls-verify: true
          server: https://127.0.0.1:4001
        name: k8s-dev-clusters
      - cluster:
          insecure-skip-tls-verify: true
          server: https://127.0.0.1:4002
        name: k8s-test-clusters
      - cluster:
          insecure-skip-tls-verify: true
          server: https://127.0.0.1:4004
        name: k8s-prod-clusters  
    contexts:
      - context:
          cluster: k8s-dev-clusters
          user: k8s-dev-user
        name: k8s-dev
      - context:
          cluster: k8s-test-clusters
          user: k8s-test-user
        name: k8s-test
      - context:
          cluster: k8s-prod-clusters
          user: k8s-prod-user
        name: k8s-prod
    #默认的context    
    current-context: k8s-dev
    kind: Config
    preferences: {}
    users:
      - name: k8s-dev-user
        user:
          token: a5bbbbbbbbbbbbbbbbbbbbbb
      - name: k8s-test-user
        user:
          token: a5cccccccccccccccccccccc
      - name: k8s-prod-user
        user:
          token: a5cccccccccccccggggggggg
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    保存一下 config 文件,执行如下命令:

    kubectl config get-contexts
    
    • 1

    我们可以看到有如下三个 contexts,目前使用的是k8s-dev的contexts。
    在这里插入图片描述
    切换contexts 到 k8s-test 可以使用如下命令:

    kubectl config use-context k8s-test
    
    • 1

    看到 Switched to context “k8s-test”. 既代表我们已经切换成功:
    在这里插入图片描述
    详细的 contexts 可以查看下面的文章:
    Kubernetes context 上下文配置
    https://blog.csdn.net/xixihahalelehehe/article/details/129563776

  • 相关阅读:
    Python_数据容器_列表list
    基因组坐标系统的 0-based 和 1-based(图文详解)
    字符串拆分以及合并--Python
    动态内存管理
    AcWing 837. 连通块中点的数量
    ubuntu20.04 nerf Instant-ngp (下) 复现,自建数据集,导出mesh
    力扣刷题记录(Java)(四)
    大学生HTML CSS动漫主题网页制作——刀剑神域(6页) dreamweaver作业静态HTML网页设计
    Nagios的安装和使用
    车间调度|基于帝王蝶优化算法的车间调度(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/weter_drop/article/details/134427738