Ubuntu20.04 部署 k8s

news2025/1/11 10:04:27

目前生产部署 Kubernetes 集群主要有两种方式

  • kubeadm

Kubeadm是一个k8s部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。

kubeadm 是由 k8s 官方所提供的专门部署集群的管理工具。

在每一个节点主机上都要手动安装并运行 docker ,同时也都要手动安装并运行 kubelet。master 节点初始化的这个步骤,其实就是通过kubeadm 工具将 API Server、etcd、controller-manager、scheduler 各组件运行为 Pod,也就是跑在 docker 上。而其他 node 节点,因为已经运行了 kubelet、docker 组件,剩下的 kube-proxy 组件也是要运行在 Pod 上。

kubelet:负责能运行 Pod 化容器的核心组件。
docker:运行容器的引擎。

但是以上 master 节点上的 Pod 都是静态 Pod (static Pod),并不受 k8s 自身管理,只是运行为 Pod 形式而已,也可运行为自托管 Pod。

下图为此种方式部署的架构
1592881-20190718105355158-600288299.png

  • 二进制包

从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。

此方法是将 API Server、etcd、controller-manager、schedule 等各组件进行 install、编译安装或者展开安装的方式手动直接安装在 master 节点主机上,作为系统级守护进程运行。

将 kube-proxy、kubelet、docker、flannel 各组件进行 install 或下载已预制好的二进制程序包手动安装在 node 节点主机上,作为系统级守护进程运行。

此部署方式非常的繁琐,出于安全方面的考虑,各组件之间通信都需要配置 CA 和证书,且如果 master 宕机了,需要手动启动这些系统级的守护进程。

以下采用 kubeadm 的方式搭建集群。

安装主要事项:

  • 一台节点安装master,一台安装node,不能在一个主机同时安装master和node;
  • k8s里的每一个主机名不能一样;

1. 环境准备

虚拟机/服务器要求:
建议硬件配置:2核CPU、4G内存、40G硬盘。

k8s-master:192.168.10.97
k8s-node1:192.168.10.100
k8s-node2:192.168.10.111

2. 初始化系统

系统:ubuntu 20.04
以下操作在三台机器上都需要执行。

2.1 更改主机名

sudo hostnamectl set-hostname k8s-master
sudo hostnamectl set-hostname k8s-node1
sudo hostnamectl set-hostname k8s-node2

2.2 修改hosts文件

大型环境可以使用 DNS 的方式来使主机名和 ip 互相解析
vim /etc/hosts

192.168.10.97 k8s-master
192.168.10.100 k8s-node1
192.168.10.111 k8s-node2

2.3 配置网卡 ip

系统不同,配置文件可能不同
vim /etc/netplan/00-installer-config.yaml

# Let NetworkManager manage all devices on this system
network:
  ethernets:
    ens33:   #注意修改为实际的网卡 ens33
      dhcp4: no
      addresses: [192.168.10.97/24]   #静态ip,node1/node2换成机器对应的 ip 即可
      gateway4: 192.168.10.1   #网关,可在windows设置里查看
      nameservers:
        addresses: [192.168.10.1]   #DNS,需要根据实际修改,可在windows设置里查看
  version: 2

sudo netplan apply配置生效

2.4 关闭防火墙

sudo systemctl stop ufw.service
sudo systemctl disable ufw.service   #开机禁用
sudo systemctl status ufw.service
ufw disable

测试网络是否正常
ping www.baidu.com
ping 192.168.10.100
ping 192.168.10.111

2.5 修改 apt 源

cd /etc/apt
cp sources.list sources.list.bak:备份
vim sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
# deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

apt update:更新

2.6 禁用 swap

systemctl stop swap.target
systemctl status swap.target
systemctl disable swap.target   #开机禁用
systemctl stop swap.img.swap
systemctl status swap.img.swap

# 关闭虚拟交换分区
sudo vim /etc/fstab
将 swap.img 的一行注释掉

2.7 修改内核参数

安装 ipvsadm
apt install -y ipvsadm

sudo tee /etc/sysctl.d/k8s.conf << 'EOF'
net.ipv4.ip_forward = 1
EOF

sudo sysctl -p /etc/sysctl.d/k8s.conf 
sudo cat > /etc/modules-load.d/ipvs.conf << EOF
ip_vs dh
ip_vs_fo
ip_vs_ftp
ip_vs
ip_vs_1blc
ip_vs lblcr
ip_vs_lc
ip_vs_mh
ip_vs_nq
ip_vs_ovf
ip_vs_pe_sip
ip_vs_rr
ip vs sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr
nf_conntrack
EOF

lsmod I grep ip_vs
systemctl enable --now systemd-modules-load.service

reboot:重启
lsmod | grep -e ip_vs -e nf_conntrack_ipv4:重启后确认内核模块是否加载成功

2.8 时间同步

先查看时区是否正常,不正确则替换为上海时区。

date
timedatectl set-timezone Asia/Shanghai   #设置时区
apt -y install ntp	 	#安装ntp服务
systemctl start ntp
systemctl enable ntp

2.9 安装 docker

apt install -y docker.io
systemctl status docker
systemctl enable docker:开机自启

# 配置镜像下载加速
sudo mkdir -p /etc/docker
vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://7ske187f.mirror.aliyuncs.com"],   #镜像加速
  "exec-opts": ["native.cgroupdriver=systemd"],   #更换驱动,k8s用systemd驱动
  "log-driver": "json-file", 
  "log-opts": {

    "max-size": "100m"

  }, 
  "storage-driver": "overlay2"
}

sudo systemctl daemon-reload:重新加载配置文件
sudo systemctl restart docker:重启docker
docker info | grep -i "Cgroup Driver":查看驱动是否更换
docker ps:测试docker命令是否可以正常使用
注意:
如果出现如下报错,执行代码框内的命令
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

mv daemon.json daemon.conf
cp daemon.conf ./daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker

2.10 使用阿里云 kubernetes 镜像

Kubernetes 镜像配置
https://developer.aliyun.com/mirror/kubernetes/?spm=a2c6h.25603864.0.0.3de125c52PZTug

apt update && apt install -y apt-transport-https
# 下载安装源的gpg秘钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt update
sudo apt install -y kubeadm=1.23.6-00 kubelet=1.23.6-00 kubectl=1.23.6-00   #安装指定版本

查看版本
apt-mark hold kubeadm kubelet kubectl:为设置相应资源不自动更新,此处不执行
systemctl enable kubelet.service:开机自启
kubeadm version
kubelet --version
kubectl version --client

3. master 初始化

以下操作只在 master 机器执行。

sudo kubeadm init \
--kubernetes-version v1.23.6 \
--apiserver-advertise-address=192.168.10.97 \
--pod-network-cidr=10.244.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers

# --pod-network-cidr 10.244.0.0/16 参数与后续 CNI 插件有关,这里以 flannel 为例,若部署其他类型的网络插件请更改此参数。
# 使用国内镜像可以指定镜像仓库:--image-repository

1678084236776.jpg
将 kubeadm join 这一段命令记下来,后面加入节点时会用到。
按提示操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get pods -A -o wide
查看pod.jpg
注意:
这里面 coredns 全部是 Pending 是正常的现象,因为系统就是这么设计的。 kubeadm 的网络供应商是中立的,因此管理员应该选择 安装 pod 的网络插件。 你必须完成 Pod 的网络配置,然后才能完全部署 CoreDNS。 在网络被配置好之前,DNS 组件会一直处于 Pending 状态。

4. 部署 CNI

使用 kubectl 部署 flannel 。
vim /etc/hosts/
加入 185.199.110.133 raw.githubusercontent.com 否则下载 kube-flannel.yml 会失败
不想下载直接在这拿 kube-flannel.yml

# 下载 kube-flannel.yml 
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f kube-flannel.yml
kubectl get nodes

安装完成后检查一下状态
1678086346485.jpg

附:
解决下载 kube-flannel.yml 失败
https://blog.csdn.net/weibo1230123/article/details/121737413

5. 加入节点

以下操作在 node1 和 node2 执行。

# 加入节点
kubeadm join 192.168.10.97:6443 --token xwwf3c.posdgk2m48ysh52l --discovery-token-ca-cert-hash sha256:414613f653ff2f61e92e085b4d8306f929efba798c8085ae025c613358e91bc4

image.png
如果忘记了上面 kubeadm join 的命令,可以在 master 执行
kubeadm token create --print-join-command:打印添加数据平面(work node)的命令。
kubeadm token create --print-join-command --ttl=0:如果 token 失效,在 master 节点执行重新生成。其中 --ttl=0 表示生成的 token 永不失效。如果不带 --ttl 参数,那么默认有效时间为24小时,在24小时内,可以无数量限制添加 worker。
kubeadm token list:查看所有token。

注意:加入集群后要将master上的 admin.conf 文件拷到node中(可以通过scp传),否则运行“kubectl get nodes”会报错
The connection to the server localhost:8080 was refused - did you specify the right host or port?

# 将 master /etc/kubernetes/admin.conf 复制到node1和node2中,再执行下面的命令
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

:查看是否加入成功
可以看到 node1 和 node2 已经加入到集群中,网络没问题就会显示 Ready。
image.png
image.png

6. 测试集群

采用 nginx 来测试集群,在 master 节点上依次执行如下命令:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
1678264197865.jpg

kubectl get pod -o wide可以看到是运行在 node1 节点
image.png

查看下,在浏览器输入 node1节点 ip+端口
192.168.10.100:31369
1678264685944.jpg
测试完毕,删除 nginx
kubectl delete deployment nginx
kubectl delete service nginx

常用命令

# 查看node节点和服务版本信息
kubectl get nodes

# 查看node节点和服务版本信息,并查看详细信息
kubectl get nodes -o wide

# 查看pod信息,默认是default名称空间
kubectl get pod

# 获取所有名称空间的pod
kubectl get po -A

# 查看pod信息,并查看详细信息
kubectl get pod -o wide

# 查看pod信息,以yaml或json格式展示(可以看到许多详细信息)
kubectl get pod pod_name -o yaml/json

# 获取指定名称空间的pod
kubectl get pod -n kube-system
kubectl get pod -n kube-system -o wide

# 获取指定名称空间的指定pod
kubectl get pod -n kube-system podName

# 删除节点,在 master 节点执行
kubectl delete node [node name]

# 删除所有的 pod 
kubectl delete pod --all

# 查看 pod 日志
kubectl describe pod [pod名称]

参考文档:https://www.cnblogs.com/seaskyccl/articles/16424149.html

7. 卸载

# 停止相关服务
systemctl stop kubelet 
systemctl stop etcd 
systemctl stop docker

# 清空K8s集群设置,卸载管理组件
sudo kubeadm reset -f
apt remove -y kubelet kubeadm kubectl

# 删除k8s相关目录
sudo rm -rvf $HOME/.kube
sudo rm -rvf ~/.kube/
sudo rm -rvf /etc/kubernetes/
sudo rm -rvf /etc/systemd/system/kubelet.service.d
sudo rm -rvf /etc/systemd/system/kubelet.service
sudo rm -rvf /usr/bin/kube*
sudo rm -rvf /etc/cni
sudo rm -rvf /opt/cni
sudo rm -rvf /var/lib/etcd
sudo rm -rvf /var/etcd

8. FAQ

8.1 kuberlet 服务启动报错

**问题:**无法运行Kubelet:配置错误 Kubelet cgroup 驱动程序\cgroupfs\不同
"Failed to run kubelet"err="failed to run kubelet: misconfiguration: kubelet cgroup driver: \"systemd"\ is different from docker cgroup driver:\"cgroupfs\""
image.png
原因:
经过分析后发现,是因为“kebernetes默认设置cgroup驱动为systemd,而docker服务的cgroup驱动为cgroupfs”。
解决:
有两种决解决方法。方法一是将docker的服务配置文件修改为何kubernetes的相同,方法二是修改kebernetes的配置文件为cgroupfs,这里采用第一种。

# 修改docker服务配置文件/etc/docker/daemon.json

{
  "registry-mirrors": ["https://7ske187f.mirror.aliyuncs.com"], 
  "exec-opts": ["native.cgroupdriver=systemd"],   #改为systemd
  "log-driver": "json-file", 
  "log-opts": {

    "max-size": "100m"

  }, 
  "storage-driver": "overlay2"
}

# 重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 修改后查看docker的cgroup
docker info | grep "Cgroup Driver"

# 重启kuberlet
systemctl restart kubelet
systemctl status kubelet

参考文档:https://www.cnblogs.com/cosmos-wong/p/15709464.html

8.2 kubectl get node 报错

问题:
报错 The connection to the server localhost:8080 was refused - did you specify the right host or port?
这个问题非常常见,master 和 node 机器都有可能碰到,报错与服务器连接被拒绝。
原因:
kubectl 的运行是需要进行配置的,它的配置文件是$HOME/.kube,如果想要在 node 节点运行此命令,需要将master 上的.kube文件复制到 node 节点上。
解决:
先查看下 /etc/kubernetes/ 目录下是否存在 admin.conf,然后将上述文件路径写入到 /.bash_profile 环境变量配置文件中。node节点如果没有 admin.conf 该文件的话,可以将 master 中的拷贝过来。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
chown $(id -u):$(id -g) $HOME/.kube/config

参考文档:https://blog.csdn.net/D1179869625/article/details/126929738

8.3 网络问题报错

问题:
查看 kubelet 服务状态发现报错 "Error validating CNI config list" configList="{\n \"name\": \"cbr0\",\n ……
或是Unable to update cni config: No networks found in /etc/cni/net.d
报错3.jpg
解决:
这个错误和 cni 网络插件有关,修改 10-kubeadm.conf 网络插件配置参数, 需要注意下配置路径和插件路径。

cd /etc/systemd/system/kubelet.service.d/
vim 10-kubeadm.conf   #增加一行Environment,如下



# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/ --cni-bin-dir=/opt/cni/bin"
# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS


systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
systemctl status kubelet

常见错误汇总
https://www.cnblogs.com/taoweizhong/p/11545953.html
https://blog.csdn.net/xjpk0/article/details/108704273

参考文档:
https://blog.csdn.net/week_ed/article/details/127376925
https://blog.csdn.net/qq_20143059/article/details/116156448
https://blog.csdn.net/qq_29078779/article/details/106373812
Megrez wiki

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

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

相关文章

OpenOFDM接收端信号处理流程

Overview — OpenOFDM 1.0 documentation 本篇文章为学习OpenOFDM之后的产出PPT&#xff0c;仅供学习参考。 ​​​​​​​

每日五道java面试题之springMVC篇(三)

目录&#xff1a; 第一题. Controller注解的作用第二题. RequestMapping注解的作用第三题. ResponseBody注解的作用第四题. PathVariable和RequestParam的区别第五题. Spring MVC与Struts2区别 第一题. Controller注解的作用 在Spring MVC 中&#xff0c;控制器Controller 负责…

Upload-labs靶场

文件漏洞上传进行复现 环境搭建--->搭建好环境如下&#xff1a; 打开第一关&#xff0c;尝试文件上传漏洞 根据界面提示&#xff0c;选择一个文件&#xff08;.php文件&#xff09;进行上传&#xff0c;发现无法上传 根据提示是指使用js对不合法文件进行了检查&#xff0c;…

蓝桥杯单片机快速开发笔记——DS18B20温度传感器

一、原理分析 考试时可能会需要自己编写底层驱动的.h文件&#xff0c;编写.h的关键是会查原理图把DQ定义好。 sbit DQ P1^4; 二、应用 温度监控&#xff1a;DS18B20广泛应用于温度监控系统中&#xff0c;如室内温度监测、工业生产过程中的温度控制等。 环境监测&#xf…

怎样提升小程序日活?签到抽奖可行吗?

一、 日活运营策略 小程序应该是即用即走的&#xff0c;每个小程序都在用户中有自己的独特定位&#xff0c;可能是生活日常必备&#xff08;美食、团购、商城&#xff09;&#xff0c;也可能是工作办公必备&#xff08;文档、打卡、工具&#xff09;。 如果你想要让自己的小程…

白话transformer(三):Q K V矩阵代码演示

在前面文章讲解了QKV矩阵的原理&#xff0c;属于比较主观的解释&#xff0c;下面用简单的代码再过一遍加深下印象。 B站视频 白话transformer&#xff08;三&#xff09; 1、生成数据 我们呢就使用一个句子来做一个测试&#xff0c; text1 "我喜欢的水果是橙子和苹果&…

WPF布局、控件与样式

视频来源&#xff1a;https://www.bilibili.com/video/BV1HC4y1b76v/ 布局 常用布局属性 HorizontalAlignment&#xff1a;用于设置元素的水平位置VerticalAlignment&#xff1a;用于设置元素的垂直位置Margin&#xff1a;指定元素与容器的边距Height&#xff1a;指定元素的…

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能&#xff0c;并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

《雷德斯东家》 第一话——火把花的回忆

引子 温馨提示:本系列小说为福瑞向! ------------------------------------------------------------------------------------------------------------------------- 作者 RedstoneCuberoot 地图 RedstoneCuberoot、梓元sama 审核 Brenda_fyx、RedstoneCuberoot Minecraft大…

Linux_socket编程

套接字通信 socket 接口 守护进程 一.套接字通信 端口号&#xff1a; 端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; 一台主机可以根据ip地址定位另一台主机&#xff0c;而两台主机之间的通信本质是进程在通信。…

stm32-编码器测速

一、编码器简介 编码电机 旋转编码器 A,B相分别接通道一和二的引脚&#xff0c;VCC&#xff0c;GND接单片机VCC&#xff0c;GND 二、正交编码器工作原理 以前的代码是通过触发外部中断&#xff0c;然后在中断函数里手动进行计次。使用编码器接口的好处就是节约软件资源。对于频…

QT下跨平台库实现及移植经验分享

最近在移植公司一个QT桌面软件到android上&#xff0c;有一些公司自定义的库&#xff0c;用了很多windows的api&#xff0c;移植过程很是曲折&#xff0c;在此有一些感悟分享一下~ 一.自编写跨平台库 1.有时候为了程序给第三方用需要编译一些qt封装库&#xff0c;并可能跨平台…

思科防火墙如何进行ACL操作

环境&#xff1a; 思科防火墙ASA5555 Cisco Adaptive Security Appliance Software Version 9.4(2)6 Device Manager Version 7.5(2)153 问题描述&#xff1a; 思科防火墙如何进行ACL操作 解决方案&#xff1a; 进入en模式 1.查看现有全部list show running-config | i…

stm32-定时器输出比较PWM

目录 一、输出比较简介 二、PWM简介 三、输出比较模式实现 1.输出比较框图(以通用定时器为例) 2.PWM基本结构 四、固件库实现 1.程序1&#xff1a;PWM呼吸灯 2.程序2&#xff1a;PWM驱动直流电机 3.程序3&#xff1a;控制舵机 一、输出比较简介 死区生成和互补输出一般…

Tomcat Session集群---会话绑定

实验配置&#xff1a; 7-1安装Nginx 7-2和7-3安装Tomcat 1.配置7-1 1.做负载均衡&#xff0c;反向代理 [rootlocalhost ~]# vim /etc/nginx/nginx.conf17 http {18 upstream tomcat {19 server 192.168.91.102:8080;20 server 192.168.91.103:8080;2…

ideaSSM校医院管理网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 校医院管理系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c; 系统具有完整的源代码和数据…

HarmonyOS应用开发者高级认证答案

** HarmonyOS应用开发者高级认证 ** 以下是高级认证答案&#xff0c;存在个别选项随机顺序答案&#xff0c;自行辨别 判断题 云函数打包完成后&#xff0c;需要到 AppGallery Connect 创建对应函数的触发器才可以在端侧中调用 错 在 column 和 Row 容器组件中&#xff0c;a…

UDF提权

目录 一、UDF概述 二、提权条件 三、漏洞复现 (一) 信息收集 1. Nmap信息收集 1.1、查看当前IP地址 1.2、扫描当前网段&#xff0c;找出目标机器 1.3、快速扫描目标机全端口 2. dirb目录扫描 3. 第一个flag 3.1、目录遍历漏洞 3.2、flag 4. 敏感信息利用 (二) 漏…

Hive-技术补充-初识ANTLR

一、背景 要清晰的理解一条Hql是如何编译成MapReduce任务的&#xff0c;就必须要学习ANTLR。下面是ANTLR的官方网址&#xff0c;下面让我们一起来跟着官网学习吧&#xff0c;在学习的过程中我参考了《antlr4权威指南》&#xff0c;你也可以读下这本书&#xff0c;一定会对你有…

labview技术交流-判断两个数组的元素是否完全相同

问题来源 分析并判断两个一维数组中包含的元素是否完全相同&#xff0c;不考虑索引顺序。比如说[1,5,7,3]和[3,5,7,1]是完全相同的两个一维数组&#xff0c;那[1,5,7,3]和[5,7,1,4]就不是相同的数组。结合我给出的示例&#xff0c;大家有没有什么思路呢&#xff1f; 思路分析 …