【2024】k8s集群 图文详细 部署安装使用(两万字)

news2024/11/26 0:39:14

目录💻

  • 一、前言
  • 二、下载依赖配置环境
    • 1、配置系统环境
      • 1.1、配置桥接网络
        • 1.1.1、parallels desktop配置
        • 1.1.2、VMware配置
      • 1.2、配置root用户登陆
    • 2、环境配置安装下载
      • 2.1、安装ipset和ipvsadm
      • 2.2、关闭SWAP分区
    • 3、配置Containerd容器
      • 3.1、下载安装Containerd
      • 3.2、创建&修改配置文件
      • 3.3、启动Containerd&开机自启
    • 4、添加K8S集群组件
      • 4.1、修改下载源
      • 4.2、安装组件
    • 5、克隆服务器
      • 5.1、通过parallels desktop克隆
      • 5.2、通过VMware克隆
    • 6、主机配置
      • 6.1、设置静态ip
      • 6.2、修改主机名
      • 6.3、主机名解析ip
      • 6.4、时间同步
      • 6.5、配置内核转发、网桥过滤配置
  • 三、部署集群
    • 1、配置部署k8s集群
      • 1.1、集群初始化
      • 1.2、准备kubectl配置文件
      • 1.2、添加从节点
    • 2、安装k8s网络插件Calico
      • 2.1、执行安装tigera-operator
      • 2.2、配置custom-resources
      • 2.3、错误解达。
  • 四、测试使用
    • 1、安装可视化Web工具:Kuboard v3
      • 1.1、使用kubectl安装(master01节点执行)
        • 1.1.2、常见错误
      • 1.2、web配置
    • 2、部署Nginx服务
      • 2.1、使用Kuboard部署
      • 2.2、使用yaml方式创建

一、前言

因为我只有一台服务器,我使用的是,所有我采用的是通过安装虚拟机的方式实现集群搭建,先把需要的配置环境拉取下来,然后再通过虚拟机的克隆的方式直接把配置克隆到新的服务器上,减少重复下载。
通过在ubuntu服务器上安装VMware和在MAC上安装parallels desktop都有部署成功,安装虚拟机的实体机配置内存需要够,并且需要可以连接🛜,因为需要下载一些配置依赖,因为是安装k8s集群需要安装三台ubuntu容器。当然如果是有多台服务器的话直接把安装命令都执行一遍就行

下面是我使用的配置:

信息配置
节点主机Ubuntu20.4 / 22.4
K8S版本1.28.1
配置三台集群(内存:2G、磁盘:30G)
SSH连接工具WindTerm / Tabby
外部主机Ubuntu24.4 / M2
虚拟机工具VMWaer / parallels desktop

ubuntu镜像(注意看后缀arm是 苹果的Apple M,Intel 的用amd): https://pan.baidu.com/s/16f1lzIqFOHlsyfzVV3lv9A?pwd=5p8a 提取码: 5p8a

WindTerm(ssh连接工具下载地址):https://github.com/kingToolbox/WindTerm/releases

二、下载依赖配置环境

1、配置系统环境

1.1、配置桥接网络

因为我们实际开发中肯定是把k8s部署在服务器上的嘛,所以需要把虚拟机内服务器的网络改为同物理机在同一网段的。所以需要在 “桥接网络”选项下的列表中选择虚拟机将要桥接的物理适配器。否则同一局域网的其他物理机都没法范围到这些虚拟机的ip

1.1.1、parallels desktop配置
  • 右击对应的虚拟机,点击配置,选择硬件中的网络,修改源为桥接网络中的默认适配器,如果有多个网络,则直接选择你想要用于外部连接的那个网络就行
    在这里插入图片描述
  • 通过ifconfig命令查看ip是否改为了外表局域网同一网段了
    在这里插入图片描述
1.1.2、VMware配置
  • 先点击网络适配器
    在这里插入图片描述

  • 选择第一个,然后保存退出
    在这里插入图片描述

  • 再右击每个主机服务器,点击设置(Settings)

    在这里插入图片描述

  • 选择网络,选择桥接网络,点击确认保存,然后就可以到对应的主机查看IP了
    在这里插入图片描述

1.2、配置root用户登陆

在创建虚拟机的时候需要先添加ssh连接,但我们创建后,是不能直接用root用户直接登陆的,虽然可以通过sudo su转为root,但每次都要转,也麻烦,可以通过修改配置,让直接通过root用户进行ssh登陆。

  1. 首先通过ssh工具连接上虚拟机,账号密码就是我们创建的时候设置的那个账号,然后通过sudo su切换为root管理员用户
    在这里插入图片描述

  2. 修改/etc/ssh/sshd_config文件配置
    修改下面ssh的配置文件的,34行左右的位置(右下角可以看行数),把标注的三行的注释打开,并且把第34行改为 yes

    vim /etc/ssh/sshd_config
    

    ·在这里插入图片描述

  3. 重制root用户的密码
    把root用户的密码改为自己需要的

    sudo passwd root
    
  4. 重启ssh服务

    service ssh restart
    

    在这里插入图片描述

  5. 其他
    如果是没有安装ssh命令,可以通过

    #更新软件包
    sudo apt update
    #安装ssh
    sudo apt install openssh-server
    #安装ifconfig命令包(刚创建的虚拟机可能会没有)
    sudo apt install net-tools
    

2、环境配置安装下载

下面的步骤,如果是使用的下面的WindTerm的截图代表是集群的每个容器都需要执行的,如果是使用的上面的tabby的截图代表是只有master节点需要执行就行。
因为他们的配置一样,我免得都下载一遍,所以我直接一个下载好,然后通过克隆的方式直接克隆到其他的节点去,这样也避免出现一些不一样的东西

2.1、安装ipset和ipvsadm

它们在 Kubernetes (k8s) 中用于网络管理和负载均衡。

  1. 首先执行安装

    apt-get install ipset ipvsadm
    

    执行的时候需要你输入y确认,确认就行
    在这里插入图片描述

  2. 然后执行配置 ipvsadm 模块,用于开机自启动的,可以使用vi /etc/modules-load.d/ipvs.conf查看是否配置成功

    cat << EOF | tee /etc/modules-load.d/ipvs.conf
    ip_vs
    ip_vs_rr
    ip_vs_wrr
    ip_vs_sh
    nf_conntrack
    EOF
    
    

    在这里插入图片描述

  3. 因为本次也需要启动,所以需要在配置一个脚本用于本次启动的
    配置脚本文件

    cat << EOF | tee ipvs.sh
    #!/bin/sh
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack
    EOF
    

    执行刚刚创建的脚本

    sh ipvs.sh
    
  4. 通过下面的命令查看是否配置成功

    lsmod | grep ip_vs
    

    如下图,就表示加载成功了在这里插入图片描述

2.2、关闭SWAP分区

直接通过修改/etc/fstab文件,永久关闭SWAP分区,避免重启时打开

  • 永久关闭

    vim /etc/fstab
    

    打开后,把最后一行/swap.img开头的注释调就行
    在这里插入图片描述
    修改swap需要重启才能使得配置文件生效,因为现在就需要用,可以直接重启,也可以先临时关闭掉

  • 临时关闭

    swapoff -a
    
  • 查看是否关闭成功

    free -m
    

    变0了表示关闭了在这里插入图片描述

3、配置Containerd容器

Containerd 在 Kubernetes 中扮演了容器运行时的角色,负责创建、管理和运行容器,提供了一个标准的容器运行时环境和安全特性。

3.1、下载安装Containerd

  1. 下载Containerd,因为是在github上所以如果没有外网可能会下载不成功,我上面的百度网盘有放下载好的(注意看后缀arm是 苹果的Apple M,Intel 的用amd),直接导入到服务器里面去就行,如果自己下载也是,别下载错了

    wget https://github.com/containerd/containerd/releases/download/v1.7.5/cri-containerd-1.7.5-linux-amd64.tar.gz
    
  2. 安装 Containerd
    解压后会自动安装到指定位置去

    #解压文件
    tar xf cri-containerd-1.7.5-linux-amd64.tar.gz  -C /
    #查看安装
    containerd --version
    
    

    在这里插入图片描述

3.2、创建&修改配置文件

  1. 创建配置文件

    #创建配置文件目录
    mkdir /etc/containerd
    #生成默认的配置文件
    containerd config default > /etc/containerd/config.toml
    #查看是否生成成功
    ls /etc/containerd
    

    在这里插入图片描述

  2. 修改配置文件

    vim /etc/containerd/config.toml
    
  • 修改第65行sanbox_image的值改为registry.aliyuncs.com/google_containers/pause:3.9,改为阿里的镜像地址和版本号。(镜像地址也可以不修改,只需要修改版本号也行,需要和后面–>8.1、集群初始化介绍的kubeadm-config.yaml文件的一致就行)
    在这里插入图片描述

  • 需要137行的false改为true

    在这里插入图片描述
    修改好后保存退出

3.3、启动Containerd&开机自启

  • 执行开机启动,并且现在就启动

    systemctl enable --now containerd
    
  • 验证是否启动成功

    systemctl status containerd
    

    在这里插入图片描述

4、添加K8S集群组件

4.1、修改下载源

  • 添加阿里的软件源

    echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
    
  • 验证是否添加成功

    ls /etc/apt/sources.list.d
    
  • 更新软件源

    apt-get update
    

    这个时候会失败,因为没有公钥,缺少 GPG 的key导致的
    在这里插入图片描述

  • 把公钥添加到服务器
    上面图片箭头的B53DC80D13EDEF05就是你的公钥,需要添加自己的

    apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
    

    导入之后就会更新成功

    apt-get update
    

    在这里插入图片描述

4.2、安装组件

下面三个是k8s必要的组件,

  • kubeadm:创建、升级和管理 Kubernetes 集群
  • kubelet:管理节点上的容器生命周期
  • kubectl:管理和调试 Kubernetes 应用程序
  1. 执行安装
    安装的时候需要y,y就行
    apt-get install kubeadm=1.28.1-00  kubelet=1.28.1-00 kubectl=1.28.1-00
    

上面是我安装的版本,如果想安装其他版本可以用下面的命令查看,如果不加版本号,会下载最新的

  • 查看版本

    apt-cache madison kubeadm
    apt-cache madison kubelet
    apt-cache madison kubectl
    
    

    在这里插入图片描述

  • 查看是否安装成功

    kubeadm version
    kubelet --version
    kubectl version
    
    
  1. 锁定版本
    安装好后需要需要锁定版本,避免自动更新造成的一些问题

    apt-mark hold kubeadm kubelet kubectl
    
    

    在这里插入图片描述

5、克隆服务器

因为我们是要建立k8s集群嘛,所以需要有三台服务器用做搭建集群,
如果是本身有多台服务器的,并且前面的命令都在全部服务器执行过了的,就可以跳过这一步。

克隆服务器在VMware和parallels desktop执行都比较简单

5.1、通过parallels desktop克隆

  1. 先把服务器关闭
    在这里插入图片描述
  2. 右击你刚刚下载的好配置依赖的容器,点击克隆
    在这里插入图片描述
  3. 定义名称,点击确认
    重复两次克隆两台从服务器出来
    在这里插入图片描述

5.2、通过VMware克隆

  1. 克隆
    先关闭虚拟机,然后右击点击
    在这里插入图片描述

  2. 然后一路next确认
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    然后等待克隆完成,启动

6、主机配置

6.1、设置静态ip

  1. 复制配置文件
    避免配置错了无法恢复。可能有些版本的配置文件不是叫00-installer-config.yaml这个名字,反正修改/etc/netplan下的那个文件就行

    cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
    
  2. 修改配置文件

    vim /etc/netplan/00-installer-config.yaml
    
  • 配置文件(三台虚拟机服务器都需要配置本虚拟机的ip)
    需要修改下面文件的addresses: [192.168.5.55/24]via: 192.168.5.1,!!!注意不要有多余空格

    • addresses需要把ip改为本服务器的
    • via:网段改为自己的,网段通过route -n命令查看
      在这里插入图片描述
  • 安装的arm架构的

    # This is the network config written by 'subiquity'
    network:
      version: 2
      ethernets:
        enp0s5:
          dhcp4: no
          addresses: [192.168.5.55/24]
          routes:
            - to: default
              via: 192.168.5.1
          nameservers:
            addresses: [119.29.29.29,114.114.114.114,8.8.8.8]
    
    
  • 安装的amd架构的

    network:
      version: 2
      renderer: networkd
      ethernets:
        ens33:
          dhcp4: no
          addresses:
            - 192.168.3.170/24
          routes:
            - to: default
              via: 192.168.3.1
          nameservers:
            addresses: [119.29.29.29,114.114.114.114,8.8.8.8]          
    
  1. 配置生效

    netplan apply
    

    配置好之后可以ping一下局域网的其他物理机的网络,看是否可以ping通
    在这里插入图片描述

6.2、修改主机名

三台服务器分别执行

  • master01执行

    hostnamectl set-hostname master01
    
  • worker01执行

    hostnamectl set-hostname worker01
    
  • worker02执行

    hostnamectl set-hostname worker02
    

    然后exit退出当前用户,在重新登陆一下就可以了,可以看名字都一句以及已经改为了对应的名字在这里插入图片描述

6.3、主机名解析ip

全部都需要执行(!!!!这个要改为自己集群的主机ip

cat >> /etc/hosts << EOF
192.168.5.53 mater01
192.168.5.54 worker01
192.168.5.55 worker02
EOF

通过WindTerm的频道功能,可以实现同频道中,只要一个页面输入,其他的都会同步输入
在这里插入图片描述
再执行查看是否写入

cat /etc/hosts

在这里插入图片描述

6.4、时间同步

  1. 更改时区为上海时区

    timedatectl set-timezone Asia/Shanghai
    
  2. 安装ntpdate
    ntpdate是一个用于同步系统时钟与NTP服务器的工具

    apt-get install ntpdate
    
  3. 通过ntpdate命令同步时间

    ntpdate time1.aliyun.com
    
  4. 通过定时任务去实现定时同步

    crontab -e
    

    中间会让你选择输入2
    在这里插入图片描述
    把下面这行加入进去

    0 */1 * * * ntpdate time1.aliyun.com
    

    在这里插入图片描述

6.5、配置内核转发、网桥过滤配置

  1. 配置依赖模块到 /etc/modules-load.d/k8s.conf,用于实现开启自动加载
  • overlay: 这是 OverlayFS 的内核模块,用于支持 Docker 和 Kubernetes 等容器化技术。

  • br_netfilter: 这是 Linux 内核中的网桥过滤器模块,用于支持 Kubernetes 的网络功能。

    cat << EOF | tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    

    配置完成之后,本次启动这两个配置,因为配置上配置后期开机启动的,当下也需要先启动

    modprobe overlay
    
    modprobe br_netfilter
    

    在这里插入图片描述
    2. 查看是否启动成功

    lsmod | egrep "overlay"
    
    lsmod | egrep "br_netfilter"
    

    在这里插入图片描述

  1. 转发配置到k8s.conf文件中

    cat << EOF | tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    
  2. 加载内核参数:

    sysctl --system
    
  3. 然后在查看是否加载成功

    sysctl -a | grep ip_forward
    

    net.ipv4.ip_forward = 1net.ipv4.ip_forward_update_priority = 1都变为1了表示加载成功在这里插入图片描述

三、部署集群

1、配置部署k8s集群

1.1、集群初始化

下面的只需要master节点的主机执行,其他的两个从机不用执行

  1. 创建kubeadm-config配置文件
    把配置文件打印到本地,用于编辑
    kubeadm config print init-defaults > kubeadm-config.yaml
    
    在这里插入图片描述
  2. 修改文件
    修改拉下来的配置文件
    vim kubeadm-config.yaml
    
  • 修改advertiseAddress的ip为mater01节点的ip

  • 修改name为mater01节点的主机名

  • 修改imageRepository仓库地址为阿里云的镜像仓库registry.aliyuncs.com/google_containers。因为前面/etc/containerd/config.toml文件修改了,如果前面的文件镜像仓库地址没修改,这个地方也可以不修改

  • 修改kubernetesVersion版本号,前面下载的是什么版本就写什么版本

  • dnsDomain表示DNS域名,可以不修改,但一个局域网内只能有一个相同的,如果有两个k8s集群用的一样的DNS名字就会冲突,一般推荐修改为公司的域名

  • networking中的 serviceSubnet 后面添加

    podSubnet: 10.244.0.0/16
    
  • 在最后面在添加下面的配置

    ---
    kind: KubeletConfiguration
    apiVersion: kubelet.config.k8s.io/v1beta1
    cgroupDriver: systemd
    

    红色的是修改,绿色的是添加
    在这里插入图片描述

  1. 重启服务
    修改完,分别重启containerd 和 kubelet

    systemctl restart containerd
    systemctl restart kubelet
    
  2. 下载镜像
    下载k8s所需要的镜像到主节点

  • --image-repository:指定镜像仓库
  • --kubernetes-version:版本号,改为你的k8s版本
    kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version v1.28.1
    
    在这里插入图片描述
  1. 执行初始化

    kubeadm init --config kubeadm-config.yaml
    

    出现下面的,就表示初始化成功了
    在这里插入图片描述

1.2、准备kubectl配置文件

  1. 添加配置文件
    把上面输出的内容在master节点执行一遍

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  2. 查看节点

    kubectl get nodes
    

    在这里插入图片描述

1.2、添加从节点

复制刚刚自己初始化的地址,到从节点执行,也就是另外两个worker02节点
(!!!这个是我的,需要复制自己的)

  1. 复制token

    kubeadm join 192.168.5.53:6443 --token abcdef.0123456789abcdef \
            --discovery-token-ca-cert-hash sha256:55917a9c22cb444e83ce19517b8b9f1856401cf3ca11df4e661978fd9eed222e
    

    在这里插入图片描述

  2. 查看
    在到主节点进行查看

    kubectl get nodes
    

    在查看,就可以看到刚刚加入的worker节点了
    在这里插入图片描述

2、安装k8s网络插件Calico

k8s常用的网络插件主要有

  • Flannel:Flannel是Kubernetes官方推荐的网络插件之一。它提供了一种基于UDP的网络通信方式,支持多租户和多网段。
  • Calico:Calico是另一个流行的K8S网络插件。它提供了一种基于BGP的网络通信方式,支持多租户和多网段。
  • Weave:Weave是一种基于 Overlay 网络的K8S网络插件。它提供了一种简单易用的方式来管理集群中的网络通信。
  • Cilium:Cilium是一种基于 Linux 内核的K8S网络插件。它提供了一种高性能的网络通信方式,支持多租户和多网段。
  • OpenVSwitch:OpenVSwitch是一种基于开源的K8S网络插件。它提供了一种高性能的网络通信方式,支持多租户和多网段。

2.1、执行安装tigera-operator

  1. 下载
    我这安装的是3.26.1,如果需要安装其他版本,直接改版本号就行,其他目录都是一样的

    kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
    

    在这里插入图片描述

  2. 查看是否安装成功tigera-operator

    kubectl get ns
    
  3. 查看pod状态
    如果是Runing 状态就代表成功了,如果不是就代表有问题

    kubectl get pods -n tigera-operator
    

    在这里插入图片描述

2.2、配置custom-resources

custom-resources.yaml 是一个用于配置 Kubernetes 的自定义资源定义(CRD)文件

  1. 先拉取下来

    wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml
    
  2. 修改配置
    修改配置网段,这个网段是前面初始化时设置的podSubnet的网段 cidr: 10.244.0.0/16

    vim custom-resources.yaml
    

    在这里插入图片描述

  3. 拉取镜像
    因为一些原因,选择不能下载,需要通过一些大佬弄的映射加速仓库去拉。
    !!!全部节点都要拉取。
    如果下面的地址不行,可以到里面去找最新的
    https://github.com/DaoCloud/public-image-mirror/issues/2328

    ctr image pull docker.1panel.live/calico/cni:v3.26.1
    ctr image pull docker.1panel.live/calico/pod2daemon-flexvol:v3.26.1
    ctr image pull docker.1panel.live/calico/node:v3.26.1
    ctr image pull docker.1panel.live/calico/kube-controllers:v3.26.1
    ctr image pull docker.1panel.live/calico/typha:v3.26.1
    ctr image pull docker.1panel.live/calico/node-driver-registrar:v3.26.1
    ctr image pull docker.1panel.live/calico/csi:v3.26.1
    

    在这里插入图片描述

  4. 查看是否下次完成

    ctr image list
    

    要确保全部都是application/vnd.docker.distribution.manifest.list.v2+json没有出现 Init:ErrImagePull
    在这里插入图片描述

  5. 应用配置
    下载完成之后执行下面命令,应用配置

    kubectl create -f custom-resources.yaml
    
  6. 查看命名空间

    kubectl get ns
    

    看到calico-system代表ok了
    在这里插入图片描述

  • 查看pod

    kubectl get pods -n calico-system
    

    大概等个几分钟,都是 Runing,代表成功在这里插入图片描述

  • 再查看节点信息,就会发现状态已经变成 Ready 状态

    kubectl get nodes
    

    在这里插入图片描述到这一步,说明就是全部安装完成了

2.3、错误解达。

如果哪个节点有问题
执行下面命令直接删除掉k8s相关的东西,然后重新安装三个组件,在去重新通过链接加入就行。

#重置 Kubernetes 集群,它会删除所有与 Kubernetes 相关的配置文件、数据和组件。
sudo kubeadm reset
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/*
rm -rf /root/.kube
rm -rf /etc/kubernetes/*

ipvsadm -C
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

四、测试使用

1、安装可视化Web工具:Kuboard v3

1.1、使用kubectl安装(master01节点执行)

发生错误可以查看kuboard官网
https://press.demo.kuboard.cn/install/v3/install-in-k8s.html

  1. 下载配置文件

    wget  https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
    
  2. 执行创建

    kubectl apply -f vim kuboard-v3-swr.yaml
    

    如果镜像拉取不下来可以修改下镜像仓库地址改为我的阿里云的进行仓库地址

    vim kuboard-v3-swr.yaml
    
    # 地址:
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/kuboard-agent
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/etcd-host:3.4.16-1
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/kuboard:v3
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/questdb:6.0.4
    

    分别把地址放入下面对应的地方
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    继续执行部署

    kubectl apply -f vim kuboard-v3-swr.yaml
    
  3. 查看部署

    kubectl get pods -n kuboard
    

    都是Running即可在这里插入图片描述

  4. web测试

  • 在浏览器打开链接http://节点IP:30080

  • 输入初始用户名和密码,并登录

    • 用户名: admin
    • 密码: Kuboard123
      在这里插入图片描述
1.1.2、常见错误

通过kubectl get pods -n kuboard查看pod,看哪个pod不成功
查看对应的错误
powershell kubectl logs kuboard-v3-7979bc788f-hln74 -n kuboard

  • desc = "transport: Error while dialing dial tcp: missing address"错误表明 Kuboard 无法连接到 etcd。
    在这里插入图片描述
  • kuboard-v3-xxxxx 的容器出现 CrashLoopBackOff 的状态,可能的原因有
    需要执行

前面两个错误都是执行下面的命令

kubectl label nodes mater01 k8s.kuboard.cn/role=etcd

1.2、web配置

  1. 刚进去会有一个错误的集群,删除掉,点击添加集群
    在这里插入图片描述

  2. 输入集群名称和描述
    在这里插入图片描述

  3. 复制kubeConfig
    在master01节点执行cat ~/.kube/config命令,把全部内容复制到kubeConfig框内,点击确认

    在这里插入图片描述
    如图显示,代表成功
    在这里插入图片描述

2、部署Nginx服务

2.1、使用Kuboard部署

  1. 在首页点击集群,选择命名空间
    在这里插入图片描述

  2. 填写信息
    左边选择,名称空间>常用操作>创建工作负载,然后再填写基本信息
    在这里插入图片描述

  3. 填写容器信息
    阿里云镜像地址

    registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
    

    填写好之后点击上面的保存>应用>确认>在这里插入图片描述
    在这里插入图片描述

  4. 查看
    在这里插入图片描述

5.访问对应的节点进行测试

在这里插入图片描述

2.2、使用yaml方式创建

  1. 创建yaml

    vim nginx-deployment.yaml
    
  2. 编写配置

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginxweb # 部署的名称
    spec:
      replicas: 2  # 设置副本数量为2
      selector:
        matchLabels:
          app: nginxweb1 # 用于选择匹配的Pod标签
      template:
        metadata:
          labels:
            app: nginxweb1 # Pod的标签
        spec:
          containers:
          - name: nginxwebc # 容器名称
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest # 镜像拉取地址,换成阿里云的,不然会拉取失败
            imagePullPolicy: IfNotPresent # 镜像拉取策略,如果本地没有就拉取
            ports:
            - containerPort: 80 # 容器内部监听的端口
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginxweb-service # 服务的名称
    spec:
      externalTrafficPolicy: Cluster # 外部流量策略设置为集群
      selector:
        app: nginxweb1 # 用于选择匹配的Pod标签
      ports:
      - protocol: TCP # 使用TCP协议
        port: 80 # 服务暴露的端口
        targetPort: 80 # Pod中容器的端口
        nodePort: 30080 # 在每个Node上分配的端口,用于外部访问
      type: NodePort # 服务类型,使用NodePort
    
  3. 应用配置

    kubectl apply -f nginx-deployment.yaml
    
  4. 检查是否成功

  • 查看pod

    kubectl get pods
    
  • 查看service

    service 可以查看到对应pod的名称还有端口映射

    kubectl get service
    
  • 查看访问ip

    curl http://10.244.5.3
    curl http://10.244.30.69
    
    

    在这里插入图片描述

  1. 通过对应的节点IP进行测试

⌨️码字不易,觉得可以的话可以一键三连一下!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之线性表(单链表的实现)

目录 一、单链表的原理 二、单链表的实现 1.单链表的定义 2.单链表的初始化 3.清空单链表 4.单链表是否为空 5.单链表的长度 6.获取指定位置 i 的元素 7.获取指定元素 e 的位置 8.向链表中插入指定位置的元素 9.向链表中删除指定位置的元素 10.遍历链表中的元素 …

zdppy+vue3+onlyoffice开发文档管理系统实战 20240813登录功能中Python生成验证码校验的研究

遗留的问题 1、登录功能 5、设计登录的接口 6、前后端联调&#xff0c;实现登录功能 7、要记录登录的Token和用户名&#xff0c;跳转到首页 2、注册功能 3、用户管理 4、角色管理 5、权限管理 6、分享功能 tb_user拆成基本信息和详细信息两张表。 6、前后端联调&#xff0c…

设计模式-标识映射(Identity Map)

概念 通过在映射中保存每个已经加载的对象&#xff0c;确保每个对象只加载一次。当要访问对象的时候&#xff0c;通过映射来查找他们。 从数据库加载对象时&#xff0c;对象与其映射的一致性、重复加载&#xff0c;这些都是需要得到保证的。 标识映射记录在一个业务事务中从数…

2024年中国AI大模型场景应用趋势解读

引言 >> 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI大模型逐渐成为推动各行业数字化转型的重要驱动力。本文从行业现状、应用痛点、发展趋势以及投资机会等方面进行详细解读&#xff0c;探讨AI大模型在未来的广泛应用前景。 一、AI大模型行业应用现状…

【LLM大模型】Llama3.1 部署本地知识库应用

一. 环境介绍 高性能应用服务 HAI 拥有丰富的预装应用&#xff0c;可以将开源社区的前沿模型快速转化为您专有的部署实践&#xff0c;一键拉起&#xff0c;即开即用。现已支持在HAI购买页的社区应用中&#xff0c;找到Llama 3.1等应用的入口&#xff0c;简单选型后&#xff0c…

【MySQL 05】数据类型

&#x1f308; 一、数据类型的作用 如果向 MySQL 特定的类型中插入不合法的数据&#xff0c;MySQL 一般会将本次操作直接拦截。反过来讲&#xff0c;能被成功插入到 MySQL 中的数据一定合法。在 MySQL 中&#xff0c;数据类型本身也是一种约束&#xff0c;这种约束约束的是使用…

一篇文章教会你如何使用Haproxy,内含大量实战案例

1. Haproxy 介绍 HAProxy是法国开发者 威利塔罗&#xff08;Willy Tarreau&#xff09; 使用C语言编写的自由及开放源代码软件&#xff0c;是一款具备高并发&#xff08;万级以上&#xff09;、高性能的TCP和HTTP应用程序代理. HAProxy运行在当前的硬件上&#xff0c;可以支持…

Ubuntu20源码安装Moveit 与 OMPL

文章目录 一、源码安装OMPL1.1 先检查是否安装二进制ompl1.2 若已经提前安装二进制&#xff0c;需要先行卸载1.3 OMPL官网安装教程 一、源码安装OMPL 1.1 先检查是否安装二进制ompl //进入到如下目录下 cd /opt/ros/noetic/// 查找 find ./ -name "libompl*" find .…

Linux用户ID和组ID

在 Linux 系统中&#xff0c;用户和组 ID 用于识别进程和文件的访问权限。每个进程都有与之关联的实际用户 ID、实际组 ID、有效用户 ID、有效组 ID 以及附属组 ID。 实际用户 ID (Real User ID, UID) 定义&#xff1a;实际用户 ID 是启动进程的用户的 ID。作用&#xff1a;标…

文件中找TopK问题 的详细讲解

一&#xff1a;问题&#xff1a; 从一个包含10000整数的文件中找出最大的前10个数。 二&#xff1a;方法&#xff1a; 1&#xff1a;先直接拿文件的前10个数&#xff0c;建造一个小堆 2&#xff1a;再依次读取文件中&#xff0c;剩下的数&#xff0c;比堆顶大&#xff0c;则…

【MATLAB源码-第246期】基于matlab的秃鹰搜索优化算法(BES)机器人栅格路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 秃鹰搜索优化算法&#xff08;Bald Eagle Search, BES&#xff09;是一种新颖的群体智能优化算法&#xff0c;受自然界中秃鹰猎食行为的启发而设计。与其他群体智能算法类似&#xff0c;BES试图通过模拟自然界的某些行为来解…

SSM药房管理系统---附源码18275

目录 摘要 1 绪论 1.1 研究目的意义 1.2国内外研究现状 2 药房管理系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2经济可行性分析 2.1.3社会可行性分析 2.1.4操作可行性分析 2.2 系统流程分析 2.2.1数据新增流程 2.2.2数据删除流程 2.3 药房管理系统 功能分…

idea过滤器 过滤所有页面除了登录页面 !(包括白名单简洁概括)

1、创建过滤器包&#xff0c;创建LoginFilter类 2.在LoginFilter类中写过滤代码 //白名单List<String> whitelist Arrays.asList("/login.jsp");//用来存放配置文件中Action节点的属性List<Action> actionList new ArrayList<>(); public void …

这些坑都没有踩过,还敢说你做过自动化测试?

在执行冒烟测试、回归测试或多浏览器兼容性测试时&#xff0c;利用web自动化测试可以显著节省人力成本&#xff0c;因此web自动化测试的价值非常大。然而&#xff0c;任何从事过web自动化测试的人都会有这样的体会:写自动化代码相对简单&#xff0c;但维护的成本却非常高。一日…

除了 EcoVadis 审核,企业还需要应对哪些可持续发展方面的挑战?

除了 EcoVadis 审核&#xff0c;企业在可持续发展方面还可能面临以下挑战&#xff1a; 对 ESG 的认识和理解不足&#xff1a;企业的领导者和各层级员工可能对 ESG&#xff08;环境、社会治理&#xff09;的内涵、要求和重要性缺乏清晰认知&#xff0c;这会影响企业在日常运营中…

Redis的基本数据结构整理以及实战运用案例

目录 一、背景介绍 二、Redis数据结构介绍 1、String(字符串) &#xff08;1&#xff09;缓存不常变化的信息&#xff0c;如用户信息、地址信息、配置信息等 &#xff08;2&#xff09;分布式锁的使用 &#xff08;3&#xff09;原子递增递减&#xff0c;可以做一些简单的…

重启人生计划-拒绝内耗

&#x1f973;&#x1f973;&#x1f973; 茫茫人海千千万万&#xff0c;感谢这一刻你看到了我的文章&#xff0c;感谢观赏&#xff0c;大家好呀&#xff0c;我是最爱吃鱼罐头&#xff0c;大家可以叫鱼罐头呦~&#x1f973;&#x1f973;&#x1f973; 如果你觉得这个【重启人生…

算法——动态规划:完全背包问题

文章目录 一、问题描述二、解决方案1. DP 状态的设计2. 状态转移方程3. 算法复杂度4. 举例5. 实现6. 滚动数组实现 三、总结 一、问题描述 问题的抽象&#xff1a;给定 n n n 种物品和一个背包&#xff0c;第 i i i 种物品的体积为 c i c_i ci​&#xff0c;价值为 w i w_…

Python项目——轻松实现动态网页爬虫|附详细源码

动态网页爬虫是专门设计用来爬取动态网页内容的自动化程序或工具。与静态网页爬虫不同&#xff0c;动态网页的内容不是预先存储在服务器上的HTML文件&#xff0c;而是根据用户的请求、交互、时间、数据库状态或其他外部因素动态生成的。这些动态内容通常通过JavaScript、AJAX&a…

2024年3个超好用的思维导图软件推荐

专业又经典的思维导图模板&#xff0c;全部拿去&#xff0c;可以直接套用的喔 1、TreeMind树图 推荐指数&#xff1a;☆☆☆☆☆ 点击直达官网>>https://shutu.cn/ TreeMind树图是一个在线思维导图工具&#xff0c;提供65万份思维导图模板&#xff0c;涵盖了各种使用场…