k8s集群部署(sealos)

news2024/9/21 22:11:48

目录

部署Ubuntu22和k8s环境

环境准备

虚拟机安装ubantu

配置hosts

配置静态ip地址

配置国内阿里云的源

Master节点安装sealos软件

启用root和允许ssh远程连接

禁用firewalld和iptables

关闭交换分区

配置ipvs功能

配置时间同步

使用sealos部署k8s集群

增加K8s的master节点

增加K8s的node 节点

分配worker role

查看集群

删除 K8s 节点的node 节点

删除 master 节点

清理 K8s 集群

安装nerdctl

基本用法:

镜像换源:

安装Dashboard

创建账号

访问dashboard


部署Ubuntu22和k8s环境

环境准备

虚拟机安装ubantu

这里我们需要提供 5 个节点

创建全新的虚拟机:

这里使用的是Ubantu22.04

进入ubantu安装界面,基本上使用的默认设置

注意要打开SSH

等待安装

出现以下界面说明安装完成,按下Enter,开始部署

查看版本,Ubuntu 22.04系统,内核版本:5.15.0-118-generic,

配置hosts

在每个节点上添加 hosts 信息:

user1@k8s-master-1:~$ vim /etc/hosts

127.0.0.1 localhost
127.0.1.1 k8s-master-1

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.254.144 k8s-master-1
192.168.254.146 k8s-node-1
192.168.254.147 k8s-node-2

节点的 hostname 必须使用标准的 DNS 命名,另外千万别用默认 localhost 的 hostname,会导致各种错误出现的。在 Kubernetes 项目里,机器的名字以及一切存储在 Etcd 中的 API 对象,都必须使用标准的 DNS 命名(RFC 1123)。可以使用命令 hostnamectl set-hostname xxx 来修改 hostname。

以下是一些基本的安装要求:

● 每个集群节点应该有不同的主机名。主机名不要带下划线。

● 所有节点的时间需要同步。

需要在 K8s 集群的第一个 master 节点上运行 sealos run 命令,目前集群外的节点不支持集群安装。

● 建议使用干净的操作系统来创建集群。不要自己装 Docker!

● 支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。

● 支持 Docker Hub 中的所有 Kubernetes 版本。

● 支持使用 Containerd 作为容器运行时。

● 在公有云上安装请使用私有 IP。

配置静态ip地址

首先我们需要在 master 节点下载 Sealos 命令行工具,我们可以通过运行命令来获取版本列表。为了防止所有的节点服务器ip地址出现变化,导致日后k8s集群重启出现异常,需要先给master和所有node节点配置好静态ip地址。

Ubuntu 22 server里配置静态ip地址

root@master-1:~# cat  /etc/netplan/00-installer-config.yaml

# This is the network config written by 'subiquity'

network:

  ethernets:

    ens33:

      addresses: [192.168.254.144/24] #本台虚拟机的ip地址

      routes:

        - to: 0.0.0.0/0

          via: 192.168.254.2

          metric: 100

      dhcp4: false

      nameservers:

        addresses: [114.114.114.114, 192.168.1.1]

  version: 2

  renderer: networkd

root@master-1:~# netplan apply

其他的节点服务器都需要进行配置静态ip地址,具体ip地址可以提前规划好,这里不一一演示。

配置国内阿里云的源

第一步:备份原配置文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

第二步:编辑sources.list文件

打开/etc/apt/sources.list文件,并将原有的镜像源替换为阿里云的镜像地址:

sudo  vim  /etc/apt/sources.list

# 阿里云Debian稳定版源

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse



# 更新和安全更新

deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse



# 额外的软件包

deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse



# 安全更新

deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

第三步:更新索引并验证

完成替换后,保存文件并退出编辑器,然后执行以下命令以更新软件包列表并确保新的源能够正常工作:

sudo apt update

如果没有任何错误提示且更新过程顺利完成,则说明已经成功切换到了阿里云的软件源。后续安装或升级软件时会从阿里云的服务器下载所需的软件包。

安装Ubuntu系统的时候设置了一个普通用户user1密码设置为123456,

所有的节点都配置相同的用户和密码,用户名user1  设置123456作为密码。

后面都要启用root用户,并且设置密码为123456同时允许root用户ssh远程连接。

Sealos run命令在执行的过程中会使用root用户去执行。

Master节点安装sealos软件

使用包管理工具安装:

root@k8s-master-1:~# echo "deb [trusted=yes] https://apt.fury.io/labring/ /" | sudo tee /etc/apt/sources.list.d/labring.list

root@k8s-master-1:~#  sudo apt update

root@k8s-master-1:~#  sudo apt install sealos

root@k8s-master-1:~#  sealos version
SealosVersion:
  buildDate: "2024-07-11T10:14:51Z"
  compiler: gc
  gitCommit: 02327d53e
  gitVersion: 5.0.0
  goVersion: go1.20.14
  platform: linux/amd64

要使用 Sealos 安装 Kubernetes 集群非常简单,只需要在 master 节点上运行 sealos run 命令,然后指定一些参数即可。比如我们这里安装一个 v1.27.10 版本的集群(v1.28.x 版本暂时有问题),并使用 Cilium 网络插件,然后指定 master 和 node 节点的 IP 地址,最后指定 ssh 的密码即可。

启用root和允许ssh远程连接

需要在Ubuntu系统里运行root用户登录,所有的节点服务器都需要激活root用户,并且允许root用户ssh远程连接。

操作步骤:

修改ssh服务的配置运行root用户登录

sudo vim /etc/ssh/sshd_config

PermitRootLogin yes

刷新ssh服务

sudo service ssh restart

激活root用户,并且设置123456为root用户密码

sudo passwd root

New password:

Retype new password:

passwd: password updated successfully

禁用firewalld和iptables

安装K8S前关闭iptables和firewalld主要是为了避免防火墙规则与K8S网络组件间的通信冲突,确保网络通信无阻碍,并简化配置和调试过程。

ufw disable

关闭交换分区

Swap交换分区通常位于磁盘上,其访问速度远低于物理内存。当系统内存不足时,如果启用swap,容器运行所需的内存数据可能会被交换到swap分区,导致磁盘I/O负载增加,从而显著降低容器的运行性能。

频繁的磁盘I/O操作不仅会降低性能,还可能导致系统不稳定,特别是在高负载情况下,关闭swap可以避免因swap使用而引入的潜在稳定性问题。

Kubernetes官方文档和社区中的最佳实践通常建议关闭swap,以确保集群的稳定性和性能。

# 临时关闭
swapoff -a
# 永久关闭
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

配置ipvs功能

Kubernetes官方推荐使用IPVS作为负载均衡的实现方式之一。

IPVS在性能、灵活性和可扩展性方面都有明显优势,能够满足大规模集群和高并发场景下的需求。

# 安装ipset和ipvsadm
apt install -y ipvsadm ipset

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

# 重启
reboot

# 查看对应的模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack

配置时间同步

# 安装服务
apt install -y chrony

# 启动chronyd服务
systemctl start chrony && systemctl enable chrony

使用sealos部署k8s集群

下面命令可以自动帮助安装k8s集群,123456是所有节点的root用户的密码,建议设置成相同的密码,下面的命令在master节点上运行。

sudo sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.10 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 \
     --masters 192.168.254.144 \
     --nodes 192.168.254.146,192.168.254.147 -p '123456'

Yes [y/yes], No [n/no]: y

部署一个包含 Kubernetes 1.27.10、Helm 3.9.4 和 Cilium 1.13.4 的集群,同时指定了一个 master 节点和两个 node 节点的 IP 地址,并设置了相同的密码 123456 用于这些节点。

这里需要等待一段时间等待部署。

查看部署k8s后的节点

root@k8s-master-1:~# kubectl get nodes
NAME           STATUS   ROLES           AGE     VERSION
k8s-master-1   Ready    control-plane   2m27s   v1.27.10
k8s-node-1     Ready    <none>          78s     v1.27.10
k8s-node-2     Ready    <none>          78s     v1.27.10

查看kube-system命名空间的pod

root@k8s-master-1:~# kubectl get pod -n kube-system
NAME                                   READY   STATUS    RESTARTS        AGE
cilium-b8dcz                           1/1     Running   0               50m
cilium-blp4p                           1/1     Running   0               50m
cilium-operator-86666d88cb-bhptr       1/1     Running   2 (4m43s ago)   50m
cilium-xjqkg                           1/1     Running   0               50m
coredns-5d78c9869d-kz68z               1/1     Running   0               51m
coredns-5d78c9869d-r7vxx               1/1     Running   0               51m
etcd-k8s-master-1                      1/1     Running   0               52m
kube-apiserver-k8s-master-1            1/1     Running   1 (4m18s ago)   52m
kube-controller-manager-k8s-master-1   1/1     Running   1 (51m ago)     52m
kube-proxy-9xf8l                       1/1     Running   0               51m
kube-proxy-j7hv2                       1/1     Running   0               51m
kube-proxy-rp86k                       1/1     Running   0               51m
kube-scheduler-k8s-master-1            1/1     Running   1 (51m ago)     52m
kube-sealos-lvscare-k8s-node-1         1/1     Running   0               2m55s
kube-sealos-lvscare-k8s-node-2         1/1     Running   0               2m55s

增加K8s的master节点

新加的节点同样进行环境准备的相关操作。

增加 K8s 节点和增加 node 节点,需要在新建的虚拟机里添加所有节点服务器的名字和对应的ip地址。

新增的k8s-master-2是Ubuntu22.04系统。

cat /etc/hosts

127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.254.144 k8s-master-1

192.168.254.145 k8s-master-2
192.168.254.146 k8s-node-1
192.168.254.147 k8s-node-2

在k8s-master-2上启用root用户,允许root用户远程访问ssh服务,root用户密码设置为123456

sudo vim /etc/ssh/sshd_config

PermitRootLogin yes

sudo service ssh restart

sudo passwd root

New password:

Retype new password:

passwd: password updated successfully

在第1个master上进行操作,因为它安装了sealos软件。

切换到root用户进行。

k8s-master-2上的root用户密码需要和前面的master节点密码一样。

前面创建k8s集群的时候使用过密码123456作为所有节点的密码。

user1@k8s-master-1:~$ su - root

Password:

root@k8s-master-1:~# sealos add --masters 192.168.254.145

Yes [y/yes], No [n/no]: y

出现如图所示画面说明添加成功

增加K8s的node 节点

新加的节点同样进行环境准备的相关操作。

k8s-node-3节点的系统是Ubuntu22.04,在k8s-node-3上启用root用户,允许root用户远程访问ssh服务,将123456设置为root用户密码。

user1@k8s-node-3:~$ cat /etc/issue

Ubuntu 22.04.4 LTS \n \l

user1@k8s-node-3:~$ uname  -r

5.15.0-97-generic

修改ssh服务的配置文件,增加运行root用户登录

user1@k8s-node-3:~$ sudo vim /etc/ssh/sshd_config

PermitRootLogin yes

重启ssh服务

user1@k8s-node-3:~$ sudo service ssh restart

激活root用户,并且设置123456为root用户密码。

user1@k8s-node-3:~$ sudo passwd root

New password:

Retype new password:

passwd: password updated successfully

更新源,该版本默认使用的清华源

user1@k8s-node-3:~$ sudo apt update

Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]

Hit:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease

Hit:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates InRelease

Hit:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-backports InRelease

Fetched 110 kB in 2s (58.4 kB/s)  

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

2 packages can be upgraded. Run 'apt list --upgradable' to see them.

在master节点上执行下面的命令,192.168.254.148是k8s-node-3的ip地址,它的root用户的密码是123456并且运行ssh远程登录

root@k8s-master-1:~# sealos add --nodes 192.168.254.148

分配worker role

# 在master上执行
kubectl label node k8s-node-1 node-role.kubernetes.io/worker=worker
kubectl label node k8s-node-2 node-role.kubernetes.io/worker=worker

kubectl label node k8s-node-3 node-role.kubernetes.io/worker=worker

......

查看集群

查看节点

root@k8s-master-1:~# kubectl get nodes

查看命名空间

root@k8s-master-1:~# kubectl get ns

NAME              STATUS   AGE
default           Active   6m42s
kube-node-lease   Active   6m42s
kube-public       Active   6m42s
kube-system       Active   6m42s

查看所有的pod

root@k8s-master-1:~# kubectl get pod -A

NAMESPACE     NAME                                   READY   STATUS    RESTARTS        AGE
kube-system   cilium-6v9mh                           1/1     Running   1 (2m6s ago)    5m30s
kube-system   cilium-g6gms                           1/1     Running   1 (2m10s ago)   5m30s
kube-system   cilium-lfv47                           1/1     Running   1 (2m11s ago)   5m30s
kube-system   cilium-operator-86666d88cb-mvjln       1/1     Running   1 (2m6s ago)    5m30s
kube-system   cilium-vcmqj                           1/1     Running   1 (2m8s ago)    5m30s
kube-system   cilium-w4dbl                           1/1     Running   1 (2m6s ago)    5m30s
kube-system   coredns-5d78c9869d-5nfqb               1/1     Running   1 (2m11s ago)   6m40s
kube-system   coredns-5d78c9869d-gddw7               1/1     Running   1 (2m11s ago)   6m40s
kube-system   etcd-k8s-master-1                      1/1     Running   4 (2m11s ago)   6m53s
kube-system   etcd-k8s-master-2                      1/1     Running   1 (2m8s ago)    6m27s
kube-system   kube-apiserver-k8s-master-1            1/1     Running   5 (2m11s ago)   6m51s
kube-system   kube-apiserver-k8s-master-2            1/1     Running   5 (2m8s ago)    6m12s
kube-system   kube-controller-manager-k8s-master-1   1/1     Running   7 (2m11s ago)   6m52s
kube-system   kube-controller-manager-k8s-master-2   1/1     Running   5 (2m8s ago)    6m26s
kube-system   kube-proxy-9v988                       1/1     Running   1 (2m11s ago)   6m39s
kube-system   kube-proxy-fn8r6                       1/1     Running   1 (2m8s ago)    6m27s
kube-system   kube-proxy-jvgrp                       1/1     Running   1 (2m6s ago)    5m40s
kube-system   kube-proxy-m5lhc                       1/1     Running   1 (2m10s ago)   5m36s
kube-system   kube-proxy-tl9zk                       1/1     Running   1 (2m6s ago)    5m38s
kube-system   kube-scheduler-k8s-master-1            1/1     Running   7 (2m11s ago)   6m52s
kube-system   kube-scheduler-k8s-master-2            1/1     Running   5 (2m8s ago)    6m12s
kube-system   kube-sealos-lvscare-k8s-node-1         1/1     Running   3 (54s ago)     5m23s
kube-system   kube-sealos-lvscare-k8s-node-2         1/1     Running   2 (2m6s ago)    5m12s
kube-system   kube-sealos-lvscare-k8s-node-3         1/1     Running   2 (2m6s ago)    5m27s
 

删除 K8s 节点的node 节点

root@k8s-master-1:~#sealos delete --nodes 192.168.254.146,192.168.254.147

删除 master 节点

root@k8s-master-1:~#sealos delete --masters 192.168.254.145

清理 K8s 集群

root@k8s-master-1:~#sealos reset

注意:sealos reset 命令的主要功能是重置或清理 Sealos 部署的 Kubernetes 集群。这个命令会执行一系列操作,以尽可能地将集群恢复到初始状态或彻底删除集群配置,包括删除所有已部署的组件、节点信息、配置文件等。因此在使用之前务必确认是否真的需要重置集群。

安装nerdctl

wget https://github.com/containerd/nerdctl/releases/download/v1.7.6/nerdctl-1.7.6-linux-amd64.tar.gz

# 解压安装包到 /usr/local/bin 目录
sudo tar xzvf nerdctl-1.7.6-linux-amd64.tar.gz -C /usr/local/bin

# 确保 nerdctl 二进制文件具有执行权限
sudo chmod +x /usr/local/bin/nerdctl

# 验证安装
nerdctl --version

基本用法:


(1)容器管理

# 查看正在运行的容器(包括停止的)

nerdctl ps -a

# 启动一个新容器

nerdctl run -it --rm alpine

# --rm 确保 alpine 容器在执行完 echo "Hello, World!" 命令后会被自动删除,而不需要手动执行 docker rm 或 nerdctl rm

nerdctl run --rm alpine echo "Hello, World!"

# -d 后台运行

# 停止一个正在运行的容器

nerdctl stop <container_id>

# 删除一个容器

nerdctl rm <container_id>

(2)镜像管理

# 查看所有镜像
nerdctl images

# 拉取镜像

nerdctl pull nginx

# 删除镜像

nerdctl rmi nginx

# 导入镜像

nerdctl load [OPTIONS]

# 导出镜像:

nerdctl save [OPTIONS] IMAGE [IMAGE...]

# 镜像标签:

nerdctl tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

(3)数据卷管理

# 创建数据卷
nerdctl volume create my-volume

# 列出数据卷
nerdctl volume ls

# 删除数据卷
nerdctl volume rm my-volume

(4)网络管理

# 创建网络
nerdctl network create my-network

# 列出网络
nerdctl network ls

# 删除网络
nerdctl network rm my-network

镜像换源:

当nerdctl拉取镜像时会从docker.io中拉取,但是国内是访问不到的,所以我们要进行换源

(1)编辑 containerd 配置文件

vim /etc/containerd/config.toml

version = 2
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = 0

[grpc]
  address = "/run/containerd/containerd.sock"
  uid = 0
  gid = 0
  max_recv_message_size = 16777216
  max_send_message_size = 16777216

[debug]
  address = "/run/containerd/containerd-debug.sock"
  uid = 0
  gid = 0
  level = "warn"

[timeouts]
  "io.containerd.timeout.shim.cleanup" = "5s"
  "io.containerd.timeout.shim.load" = "5s"
  "io.containerd.timeout.shim.shutdown" = "3s"
  "io.containerd.timeout.task.state" = "2s"

[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    sandbox_image = "sealos.hub:5000/pause:3.9"
    max_container_log_line_size = -1
    max_concurrent_downloads = 20
    disable_apparmor = false
    [plugins."io.containerd.grpc.v1.cri".containerd]
      snapshotter = "overlayfs"
      default_runtime_name = "runc"
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
          runtime_type = "io.containerd.runc.v2"
          runtime_engine = ""
          runtime_root = ""
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            SystemdCgroup = true
    [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"

mkdir /etc/containerd/certs.d/docker.io/ -p
vim /etc/containerd/certs.d/docker.io/hosts.toml

server = "https://registry-1.docker.io"

[host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve", "push"]


(2)刷新服务

sudo systemctl restart containerd

至此就可以拉取镜像了

安装Dashboard

# 修改Service部分,改为NodePort对外暴露端口

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml\

安装

kubectl apply -f recommended.yaml

查看

kubectl get pods,svc -n kubernetes-dashboard

Running状态说明安装成功

创建账号

创建dashboard-access-token.yaml文件

# Creating a Service Account
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
# Creating a ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
---
# Getting a long-lived Bearer Token for ServiceAccount
apiVersion: v1
kind: Secret
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
  annotations:
    kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
# Clean up and next steps
# kubectl -n kubernetes-dashboard delete serviceaccount admin-user
# kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user

执行

root@k8s-master-1:~/dashboard# vim dashboard-access-token.yaml
root@k8s-master-1:~/dashboard# kubectl apply -f dashboard-access-token.yaml 

serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
secret/admin-user created

获取token

root@k8s-master-1:~/dashboard# kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d

eyJhbGciOiJSUzI1NiIsImtpZCI6IlFfTW82UWJ0QUViMUZZWjhUSW5objV3WTdaLUVtZE1rMHE0eVpRc1kxeUkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI1OGVkMDliNi0yYWJjLTQ1YTAtYTYxYy1kMzBkNzUyMzI4ZmEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.GBWXmR2uGE8-S3GRRttyjNS0q181kGr3iUN8AYEoTzHn6Oeo3p0ecRHxAEhqmqhz6dfNCEG3-SLQsajroKDdUM92w0uI6zn5lrDjw66Wcx5dOD5-fBEAZdCdmoxi6AiR2TSU2BpVrJScRAYsBZUTQLApLEAqnXO6XvcOAMDeVFZIjARj6CAABHIHVDXwbdkq9yPZbAXKgL0frIs8Bj42Yn8UnaJShk64_1MXgY3tq7uoxuA_DTi93RhvohUjzmhAAZzd7tOjyahabWiyQSoK6mrFqkufLaparfIjS4tW7x_KRTrCC_SBW4P2WGtQ0GNlw3bc5oC2nWDBFJCrCeJ8_Q
 

访问dashboard

获取端口

kubectl get svc -n kubernetes-dashboard

端口为30088

浏览器访问:https://IP:PORT,

注意是https

页面中输入上一步获取到的token即可

然后就能使用dashboard控制创建的集群了

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

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

相关文章

[Linux#46][线程->网络] 单例模式 | 饿汉与懒汉 | 自旋锁 |读写锁 | 网络基础 | 书单

目录 1.线程安全 1.1 线程安全的单例模式 1.2 饿汉与懒汉实现方式&#xff1a; 实操 2.锁 3.读者写者问题 实操 4.网络基础 4.1 初始协议 书单&#xff1a; 1.线程安全 STL中的容器和智能指针的线程安全性整理如下&#xff1a;STL容器线程安全性&#xff1a; 状态&…

zdppy+vue3+onlyoffice文档管理系统实战 20240823上课笔记 Python缓存框架的进一步封装

上节课遗留问题 封装一些简单的方法&#xff0c;比如&#xff1a; set&#xff1a;设置缓存&#xff0c;带默认超时时间get&#xff1a;获取缓存delete&#xff1a;删除缓存delete_all&#xff1a;清空缓存 封装set方法 基本方法 from zdppy_cache import Cache# 创建缓存…

文字游侠AI工具:一个高效内容创作的革命性助手,效率一键提高20倍!

在当今快节奏、高效率要求的信息时代&#xff0c;传统的内容生产方式已经难以满足不断增长的网络信息需求。随着人工智能技术的飞速发展&#xff0c;一系列创新的AI工具应运而生&#xff0c;极大地改变了我们处理信息和创造内容的方式。其中&#xff0c;文字游侠AI工具凭借其出…

校友会系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;校友管理&#xff0c;生活模块管理&#xff0c;兼职信息管理&#xff0c;表白墙管理&#xff0c;我的收藏管理&#xff0c;校友论坛&#xff0c;系统管理 微信端账号功能包括&…

css实现闪烁渐变背景,@property自定义属性

自 2024 年 7 月起&#xff0c;此功能适用于最新的设备和浏览器版本。此功能可能无法在较旧的设备或浏览器中使用。 property 是 CSS 中一个相对较新的功能&#xff0c;主要用于定义自定义属性&#xff08;即 CSS 变量&#xff09;的类型、继承性以及初始值。它允许开发者更好地…

DevEco Studio 预览器报错踩坑

This module is referencing one or more HSPs and cannot be previewed. To preview components in an HSP, switch to the HSP first. 不知道大家遇见这个问题没有 是因为我们在使用name跳转别的模块的页面时 引入了hsp模块进来 所以他在编译的时候 告诉我们这个模块中引…

pyro 教程 时间序列 单变量,重尾,python pytorch,教程和实例 Forecasting预测,布朗运动项、偏差项和协变量项

预测I:单变量&#xff0c;重尾 本教程介绍了预测模块&#xff0c;用Pyro模型进行预测的框架。本教程只涵盖单变量模型和简单的可能性。本教程假设读者已经熟悉慢病毒感染和张量形状. 另请参见: 预测II:状态空间模型 预测三:层次模型 摘要 要创建预测模型: 创建预测模型班级…

加密学中的零知识证明(Zero-Knowledge Proof, ZKP)到底是什么?

加密学中的零知识证明&#xff08;Zero-Knowledge Proof, ZKP&#xff09;到底是什么&#xff1f; 引言 在加密学的应用中&#xff0c;零知识证明&#xff08;Zero-Knowledge Proof, ZKP&#xff09;无疑是一颗璀璨的明星。它不仅挑战了我们对信息验证的传统认知&#xff0c;…

如何使用ssm实现理发店会员管理系统的设计和实现+vue

TOC ssm089理发店会员管理系统的设计和实现vue 绪论 1.1 选题背景 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业…

C语言刷题日记(附详解)(2)

一、有理数加法 输入格式&#xff1a; 输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数&#xff0c;其中分子和分母全是整形范围内的正整数。 输出格式&#xff1a; 在一行中按照a/b的格式输出两个有理数的和。注意必须是该有理数的最简分数形式&#xff0c;若…

OpenCSG全网首发!Phi-3.5 Mini Instruct全参微调中文版

前沿科技速递&#x1f680; &#x1f389; 震撼发布&#xff01;OpenCSG正式推出全参数微调的Phi-3.5-mini-instruct中文版模型&#xff01; &#x1f50d; 本次发布的Phi-3.5-mini-instruct中文版模型基于最新的Phi-3.5架构&#xff0c;经过全参数微调&#xff0c;专为中文场景…

软件测试——JMeter安装配置

文章目录 JMeter介绍JMeter下载及配置配置错误 提示此时不应有...修改语言为中文 JMeter介绍 Apache JMeter 是 Apache 组织基于 Java 开发的压⼒测试⼯具&#xff0c;⽤于对软件做性能测试 JMeter下载及配置 环境要求&#xff1a;JDK版本在1.8及以上 下载压缩包&#xff0c;…

设计模式—代理模式

文章目录 以前自己做的笔记动态代理(重点)1.基于jdk的动态代理2.基于cglib的动态代理 新资料第 15 章 代理模式1、代理模式的基本介绍2、静态代码模式3、动态代理模式4、Cglib 代理模式5、代理模式(Proxy)的变体 代理模式是给某一个对象提供一个代理&#xff0c;并通过代理对象…

第12章 网络 (6)

12.8 网络层 12.8.4 分组转发 转发IP分组&#xff0c;根据目标地址分为&#xff1a; 1. 直接和本地相连。 2. 不直接相连&#xff0c;需要网关转发。 int ip_route_input_noref(skb, daddr, saddr, tos, net_dev)&#xff1a; //查找路由表。 如果 skb->_skb_r…

安捷伦色谱仪器LabVIEW软件替换与禁运配件开发

可行性分析及实现路径 可行性&#xff1a; 软件替换&#xff1a; 驱动程序支持&#xff1a; 要实现LabVIEW对安捷伦色谱仪器的控制&#xff0c;需要检查安捷伦是否提供LabVIEW驱动程序。如果没有现成的驱动&#xff0c;则可能需要开发自定义的驱动程序&#xff0c;通过LabVIEW…

微软推出全新多语言高质量Phi-3.5语言模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

css flex布局 justify-content: space-between 最后两张居左

比如如果是8张&#xff0c;最后两张两边对齐&#xff0c;第八张最后一张 放个占位符就OK了 <div class"previewPadding flex" > <div class"picList picList3" v-for"(item,index) in picDataList" :key"index"> <…

6个免费字体网站,无需担心版权问题~

在设计项目中&#xff0c;选择合适的字体至关重要。然而&#xff0c;许多高质量的字体往往价格不菲。幸运的是&#xff0c;有一些网站提供了免费的商用字体&#xff0c;既能满足设计需求&#xff0c;又不需要额外的预算。在这篇文章中&#xff0c;分享6个免费商用字体网站&…

济南网站制作方案定制

在当今数字化时代&#xff0c;拥有一个专业的网站已经成为企业发展不可或缺的一部分。济南作为山东省的省会&#xff0c;经济发展迅速&#xff0c;各行各业对网站制作的需求也日益增加。因此&#xff0c;定制化的网站制作方案在济南显得尤为重要&#xff0c;能够帮助企业在激烈…

深入探究为什么 RAG 并不总是按预期工作:概述其背后的业务价值、数据和技术。

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 欢迎来到雲闪世界。我们将首先探讨决定基于 RAG 的项目成败的业务要素。然后&#xff0c;我们将深入探讨常见的技术障碍&#xff08;从数据处理到性能优化&#xff09;&#xff0c;并讨论克服这些障碍的策略…