Kubernetes-1
学习Kubernetes第一天
- k8s-1
- 1、什么是Kubernetes
- 2、配置Kubernetes
- 2.1、准备三台全新的虚拟机
- 2.2、关闭防火墙和SElinux
- 2.3、修改主机名
- 2.4、升级操作系统(三台一起操作)
- 2.5、配置主机hosts文件,相互之间通过主机名互相访问
- 2.6、配置master和node之间的免密通道
- 2.7、关闭交换分区swap,提升性能(三台一起操作)
- 2.8、为什么要关闭swap交换分区?
- 2.9、修改机器内核参数(三台一起操作)
- 2.10、配置阿里云的repo源(三台一起)
- 2.11、配置时间同步(三台一起)
- 3、安装docker服务(三台一起)
- 3.1、安装docker的最新版本
- 3.2、配置镜像加速器
- 4、继续配置Kubernetes
- 4.1、安装初始化k8s需要的软件包(三台一起)
- 4.2、kubeadm初始化k8s集群
- 4.3、基于kubeadm.yaml文件初始化k8s
- 4.4、改一下node的角色为worker
- 4.5、安装网络插件
- 5、一些基本的命令
- 5.1、kubectl get namespace (命名空间)
- kubectl get node
- 5.2、kubectl get pod
- 6、pod是什么?
- 7、k8s中的组件
- 7.1、在master上跑哪些组件--->运行哪些程序
- 7.2、在node上跑哪些组件--->运行哪些程序
- 8、启动nginx的pod
k8s-1
1、什么是Kubernetes
Kubernetes
, also known as K8s, is an open-source system
for automating
deployment
, scaling
, and management
of containerized
applications.
Kubernetes,也称为 K8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。
docker
中也有一个容器编排工具: compose
2、配置Kubernetes
2.1、准备三台全新的虚拟机
控制节点 | master | 192.168.182.133 |
---|---|---|
工作节点 | node1 | 192.168.182.134 |
工作节点 | node2 | 192.168.182.135 |
把ip地址都改为静态的
2.2、关闭防火墙和SElinux
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# reboot
2.3、修改主机名
[root@localhost ~]# hostnamectl set-hostname master && bash
[root@master ~]#
[root@localhost ~]# hostnamectl set-hostname node-1 && bash
[root@node-1 ~]#
[root@localhost ~]# hostnamectl set-hostname node-2 && bash
[root@node-2 ~]#
2.4、升级操作系统(三台一起操作)
[root@master ~]# yum update -y
2.5、配置主机hosts文件,相互之间通过主机名互相访问
修改每台机器的/etc/hosts
文件,增加如下三行:
192.168.182.133 master
192.168.182.134 node-1
192.168.182.135 node-2'看一下'
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.182.133 master
192.168.182.134 node-1
192.168.182.135 node-2
[root@master ~]#
2.6、配置master和node之间的免密通道
ssh-keygen
cd /root/.ssh/
ssh-copy-id -i id_rsa.pub root@node-1
ssh-copy-id -i id_rsa.pub root@node-2
[root@master ~]# ssh-keygen #生成密钥对,一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DoRBMmIAstd0QrtKG0QB2+VVkRAnppI35KRV4RQvQJc root@master
The key's randomart image is:
+---[RSA 2048]----+
|Oo==&.&B+o |
|o* # #E+. |
|o B X + . |
| o o + . |
| o . . S |
| . + o |
| o . |
| |
| |
+----[SHA256]-----+[root@master ~]# cd /root/.ssh/ #进入 /root/.ssh/目录
[root@master .ssh]# ls
id_rsa id_rsa.pub
[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@node-1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host 'node-1 (192.168.182.134)' can't be established.
ECDSA key fingerprint is SHA256:VAXkY+ru3rBQHrgs94AB7LO819O7DBzXdUTGTLpNAak.
ECDSA key fingerprint is MD5:ab:bd:54:33:73:df:6b:16:48:59:15:05:c9:24:af:07.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node-1's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@node-1'"
and check to make sure that only the key(s) you wanted were added.[root@master .ssh]# ssh-copy-id -i id_rsa.pub root@node-2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host 'node-2 (192.168.182.135)' can't be established.
ECDSA key fingerprint is SHA256:9MHFCfV2pm4w8bdJKG/bPKZ543YQ/LwQQAYMnEbGE18.
ECDSA key fingerprint is MD5:2a:e4:f6:73:8e:21:02:88:1b:6d:e3:e9:89:df:de:5f.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node-2's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@node-2'"
and check to make sure that only the key(s) you wanted were added.[root@master .ssh]#
2.7、关闭交换分区swap,提升性能(三台一起操作)
[root@master .ssh]# swapoff -a
永久关闭:注释``swap挂载,给
swap`这行开头加一下注释
[root@master .ssh]# vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
2.8、为什么要关闭swap交换分区?
Swap
是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。``Kubeadm`初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k8s的时候可以指定–ignore-preflight-errors=Swap来解决。
2.9、修改机器内核参数(三台一起操作)
[root@master .ssh]# modprobe br_netfilter
[root@master .ssh]# echo "modprobe br_netfilter" >> /etc/profile
[root@master .ssh]# cat > /etc/sysctl.d/k8s.conf <<EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> EOF
[root@master .ssh]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[root@master .ssh]#
2.10、配置阿里云的repo源(三台一起)
yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm配置安装k8s组件需要的阿里云的repo源vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
2.11、配置时间同步(三台一起)
[root@master ~]# yum install ntpdate -y
[root@master ~]# ntpdate cn.pool.ntp.org3 Mar 10:15:12 ntpdate[73056]: adjust time server 84.16.67.12 offset 0.007718 sec
[root@master ~]#
加入计划任务
[root@master ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@master ~]# crontab -l
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
[root@master ~]#
[root@master ~]# service crond restart
Redirecting to /bin/systemctl restart crond.service
[root@master ~]#
3、安装docker服务(三台一起)
3.1、安装docker的最新版本
[root@master ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
[root@master ~]# systemctl start docker && systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@master ~]#
3.2、配置镜像加速器
[root@master ~]# vim /etc/docker/daemon.json
{"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"],"exec-opts": ["native.cgroupdriver=systemd"]
} [root@master ~]#
[root@master ~]# systemctl daemon-reload
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# systemctl restart docker
[root@master ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@master ~]#
4、继续配置Kubernetes
4.1、安装初始化k8s需要的软件包(三台一起)
k8s 1.24
开始就不再使用``docker作为底层的容器运行时软件,采用
containerd`作为底层的容器运行时软件
[root@master ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
Kubeadm
: kubeadm是一个工具,用来初始化k8s集群的
kubelet
: 安装在集群所有节点上,用于启动Pod的
kubectl
: 通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
[root@master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
您在 /var/spool/mail/root 中有新邮件
[root@master ~]#
4.2、kubeadm初始化k8s集群
把初始化k8s集群需要的离线镜像包上传到master、node-1、node-2机器上,手动解压
利用xftp
传到master上的root用户的家目录下
再利用``scp`传递到node-1和node-2上(之前建立过免密通道)
[root@master ~]# scp k8simage-1-20-6.tar.gz root@node-1:/root
k8simage-1-20-6.tar.gz 100% 1033MB 129.0MB/s 00:08
[root@master ~]# scp k8simage-1-20-6.tar.gz root@node-2:/root
k8simage-1-20-6.tar.gz 100% 1033MB 141.8MB/s 00:07
[root@master ~]#
导入镜像(三台一起)
[root@master ~]# docker load -i k8simage-1-20-6.tar.gz
生成一个yml文件(在master上操作)
[root@master ~]# kubeadm config print init-defaults > kubeadm.yaml
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# ls
anaconda-ks.cfg k8simage-1-20-6.tar.gz kubeadm.yaml
[root@master ~]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 1.2.3.4bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: mastertaints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12
scheduler: {}
[root@master ~]#
'修改内容'
[root@master ~]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.182.133bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: mastertaints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
[root@master ~]#
4.3、基于kubeadm.yaml文件初始化k8s
[root@master ~]# kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification
[root@master ~]# mkdir -p $HOME/.kube
您在 /var/spool/mail/root 中有新邮件
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master ~]#
接下来去node-1和node-2上去执行
[root@node-1 ~]# kubeadm join 192.168.182.133:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a258f95963e807c99fd3c1fb6d6bea67c781406006db3e26e1575dbbe71b2736
去master上查看是否成功
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master NotReady control-plane,master 8m22s v1.20.6
node-1 NotReady <none> 67s v1.20.6
node-2 NotReady <none> 61s v1.20.6
[root@master ~]#
4.4、改一下node的角色为worker
[root@master ~]# kubectl label node node-1 node-role.kubernetes.io/worker=worker
node/node-1 labeled
[root@master ~]# kubectl label node node-2 node-role.kubernetes.io/worker=worker
node/node-2 labeled
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master NotReady control-plane,master 15m v1.20.6
node-1 NotReady worker 8m12s v1.20.6
node-2 NotReady worker 8m6s v1.20.6
[root@master ~]#
4.5、安装网络插件
先利用xftp上传文件:calico.yml
到/root/
[root@master ~]# kubectl apply -f calico.yaml
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 20m v1.20.6
node-1 Ready worker 13m v1.20.6
node-2 Ready worker 13m v1.20.6
[root@master ~]#
STATUS的状态变为:Ready —>成功了
5、一些基本的命令
5.1、kubectl get namespace (命名空间)
查看命名空间
[root@master ~]# kubectl get namespace
NAME STATUS AGE
default Active 3h38m
kube-node-lease Active 3h38m
kube-public Active 3h38m
kube-system Active 3h38m
[root@master ~]#
- kube-system 是k8s实现管理功能的命名空间 -->政府–>公务员–>实现整个k8s的管理职能
- default 是默认的创建的业务容器运行的命名空间
k8s的核心思想:以容器治容器 —》以容器管理容器 —》以华治华
kubectl get node
查看node节点的状态
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 3h29m v1.20.6
node-1 Ready worker 3h21m v1.20.6
node-2 Ready worker 3h21m v1.20.6
5.2、kubectl get pod
查看启动了哪些pod
[root@master ~]# kubectl get pod
[root@master ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-6949477b58-d457n 1/1 Running 0 3h28m
calico-node-48bw7 1/1 Running 0 3h28m
calico-node-lwvsk 1/1 Running 0 3h28m
calico-node-zjvg8 1/1 Running 0 3h28m
coredns-7f89b7bc75-pncxv 1/1 Running 0 3h47m
coredns-7f89b7bc75-qb966 1/1 Running 0 3h47m
etcd-master 1/1 Running 0 3h48m
kube-apiserver-master 1/1 Running 1 3h48m
kube-controller-manager-master 1/1 Running 0 3h48m
kube-proxy-48lqm 1/1 Running 0 3h40m
kube-proxy-7kfxj 1/1 Running 0 3h47m
kube-proxy-lwlxq 1/1 Running 0 3h40m
kube-scheduler-master 1/1 Running 0 3h48m
[root@master ~]#
这个 kubectl get pod -n kube-system
命令的含义是在 Kubernetes 集群中获取属于 kube-system
命名空间的所有 Pod。
解释如下:
kubectl
: Kubernetes 命令行工具。get pod
: 获取 Pod 资源的信息。-n kube-system
: 指定命名空间为kube-system
6、pod是什么?
在Kubernetes(K8s)
中,``Pod是最小的可部署单元。
一个Pod可以包含一个或多个容器`,它们共享相同的网络命名空间、存储卷以及一些其他资源。Pod是Kubernetes中多个容器协同工作的基本单元,通常用于组织和管理紧密耦合的容器组。
Pod提供了一些重要的特性:
-
共享网络命名空间:Pod内的容器可以使用相同的IP地址和端口空间,容器之间可以通过localhost进行通信。
-
共享存储卷:Pod内的容器可以访问相同的存储卷,从而实现容器之间的数据共享。
-
共享进程空间:Pod内的容器运行在相同的Linux命名空间中,它们可以共享进程视图。
-
一个Pod中的容器共享生命周期:Pod中的所有容器将同时启动、停止和重新启动。
总体而言,Pod
是Kubernetes中的基本构建块,用于组织和管理容器化应用程序。容器是Pod中的一个组成部分,但Pod提供了更高层次的抽象,用于协调和管理这些容器。
7、k8s中的组件
7.1、在master上跑哪些组件—>运行哪些程序
- Kube API Server(API服务器):
- 作用:作为Kubernetes系统的前端接口,接收来自用户和其他组件的API请求,并将这些请求转发给其他组件进行处理。
监听6443端口
- 重要特性:提供了RESTful API,是Kubernetes系统的唯一接口。
- 作用:作为Kubernetes系统的前端接口,接收来自用户和其他组件的API请求,并将这些请求转发给其他组件进行处理。
- etcd(分布式键值存储):
- 作用:保存了Kubernetes集群的所有重要配置信息,包括集群状态、配置、元数据等。
存储数据的
。监听的端口: 2379,2380 - 重要特性:保证高可用性和一致性,是Kubernetes的数据存储后端。
- 作用:保存了Kubernetes集群的所有重要配置信息,包括集群状态、配置、元数据等。
- Kube Controller Manager(控制器管理器):
- 作用:负责运行控制器,监视集群的状态变化,并根据状态的变化进行相应的调整和控制。
- 重要特性:包括节点控制器、副本控制器、服务控制器等。
- Kube Scheduler(调度器):
- 作用: 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。
- 重要特性:支持自定义调度器,具有插件式架构。
- cloud Controller Manager(云控制器管理器):
- 作用: 对接云的,阿里,腾讯,亚马逊等
7.2、在node上跑哪些组件—>运行哪些程序
- Kubelet(节点代理):
- 作用:负责在节点上运行和管理容器,监视与报告容器状态,并与控制平面的 Kube API Server 通信。—>
调用docker帮我们启容器
—>指挥docker去启动容器 - 在Node上的运行:每个节点都有一个运行 Kubelet 的实例。
- 作用:负责在节点上运行和管理容器,监视与报告容器状态,并与控制平面的 Kube API Server 通信。—>
- Kube Proxy(代理):
- 作用:负责维护节点上的网络规则,将服务暴露给集群内或集群外的其他服务。
- 在Node上的运行:每个节点都有一个运行 Kube Proxy 的实例。
联想到:docker proxy
Docker代理(Docker Proxy)通常是指Docker守护进程中的HTTP代理或HTTPS代理设置,用于在Docker守护进程与Docker Hub或其他镜像仓库之间进行网络通信。这个代理在一些网络环境中是必要的,例如在使用代理服务器访问互联网时,或者在受限制的网络环境中。
8、启动nginx的pod
[root@master ~]# kubectl create deployment k8s-nginx --image=nginx -r 3
deployment.apps/k8s-nginx created
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
k8s-nginx-75f95db655-dxwc6 0/1 ContainerCreating 0 18s
k8s-nginx-75f95db655-f8cnx 0/1 ContainerCreating 0 18s
k8s-nginx-75f95db655-ww9mk 0/1 ContainerCreating 0 18s
[root@master ~]#
该命令使用kubectl
在Kubernetes集群中创建一个名为 k8s-nginx
的部署(Deployment),使用 Nginx 镜像,并指定副本数为 3。
具体解释如下:
-
kubectl create deployment k8s-nginx
:创建一个名为k8s-nginx
的部署。 -
--image=nginx
:指定部署使用的容器镜像,这里是 Nginx 镜像。部署将会启动包含该镜像的 Pod。 -
-r 3
:设置副本数为 3。这表示在集群中将有 3 个相同的 Pod 实例,每个 Pod 都运行着 Nginx 容器。副本数是部署控制的实例数,用于确保在集群中有指定数量的运行实例。
总结起来,这个命令的目的是在 Kubernetes 集群中创建一个部署,该部署会启动 3 个运行 Nginx 镜像的 Pod 实例。这是一个简单的部署示例,你可以根据实际需求进行更复杂的部署配置。
netes 集群中创建一个部署,该部署会启动 3 个运行 Nginx 镜像的 Pod 实例。这是一个简单的部署示例,你可以根据实际需求进行更复杂的部署配置。
查看启的容器在哪个node节点上
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
k8s-nginx-75f95db655-dxwc6 1/1 Running 0 68s 10.244.84.130 node-1 <none> <none>
k8s-nginx-75f95db655-f8cnx 1/1 Running 0 68s 10.244.84.131 node-1 <none> <none>
k8s-nginx-75f95db655-ww9mk 1/1 Running 0 68s 10.244.247.3 node-2 <none> <none>
[root@master ~]#
相关文章:

Kubernetes-1
学习Kubernetes第一天 k8s-11、什么是Kubernetes2、配置Kubernetes2.1、准备三台全新的虚拟机2.2、关闭防火墙和SElinux2.3、修改主机名2.4、升级操作系统(三台一起操作)2.5、配置主机hosts文件,相互之间通过主机名互相访问2.6、配置master和node之间的免密通道2.7、…...
SpringMVC框架②
三、RequestMapping注解 3、RequestMapping注解的value属性 必须设置 发送一个请求最直观的表示方式就是一个请求路径 altenter 进入接口方法 再用 alte7 查看里面的属性 value值可以是数组 value{"test","test1"} 只满足任何一个请求地址就会调用此方…...

springboot230基于Spring Boot在线远程考试系统的设计与实现
在线远程考试系统设计与实现 摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到…...

盘点:国家智能算力中心
文章目录 1. Main2. My thoughtsReference 1. Main 按照《中国算力白皮书(2022年)》的定义,算力主要分为四部分:通用算力、智能算力、超算算力、边缘算力。通用算力以CPU芯片输出的计算能力为主;智能算力以GPU、FPGA、…...
【C++】7-2 寻找完美数 分数 10
7-2 寻找完美数 分数 10 全屏浏览 切换布局 作者 李祥 单位 湖北经济学院 所有真因子之和小于其本身的数称为亏数。 如:4 的真因子 1、2 之和为 3,小于 4,是亏数。 所有真因子之和大于其本身的数称为盈数。 如:12 的真因子 1…...

基于Mahout实现K-Means聚类
需求分析 需要对数据集进行预处理,选择合适的特征进行聚类分析,确定聚类的数量和初始中心点,调用Mahout提供的K-Means算法进行聚类计算,评估聚类结果的准确性和稳定性。同时,需要对Mahout的使用和参数调优进行深入学习…...
科技的成就(五十七)
535、Machine Learning "1959 年 7 月,塞缪尔首创 Machine Learning 一词。塞缪尔在“Some Studies in Machine Learning Using theGame of Checkers”一文中给 Machine Learning 下了个非正式定义:没有明确编程指令的情况下,能让计算机…...

动态IP代理技术在网络爬虫中的实际使用
目录 一、动态IP代理技术概述 二、动态IP代理技术的优势 三、动态IP代理技术的实际应用 四、注意事项 五、案例分析 六、结论 随着互联网的迅猛发展,网络爬虫成为了获取信息、分析数据的重要工具。然而,在进行大规模爬取时,爬虫常常面临…...

计算机网络:深入探索HTTP
引言: HTTP,全称超文本传输协议(Hypertext Transfer Protocol),是互联网上数据通信的基础。它定义了客户端(如浏览器)和服务器之间如何交互和传输数据。HTTP最初是为了支持Web浏览而设计的&…...

Netty(1)nio
一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 st…...

1.3 vue ui框架-element-ui框架
1 前言 ElementUI是一套基于VUE2.0的桌面端组件库,ElementUI提供了丰富的组件帮助开发人员快速构建功能强大、风格统一的页面。 ElementUI官网 https://element.eleme.io 2 安装 运行命令 cnpm i element-ui -S -S表示只在该项目下安装,不是全局安…...
关于MediaEval数据集的Dataset构建(Text部分-使用PLM BERT)
import random import numpy as np import pandas as pd import torch from transformers import BertModel,BertTokenizer from tqdm.auto import tqdm from torch.utils.data import Dataset import re """参考Game-On论文""" ""&qu…...
QML学习之Text
文本显示是界面开发中的重要内容,在Qt Quick模块中提供了 Text 项来进行文本的显示,其中可以使用 font 属性组对文本字体进行设置: font.bold:是否加粗,取值为true或false font.capitalization:大写策略&a…...
轮转数组(元素位置对调、数据的左旋、右旋)
189. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …...

喜迎乔迁,开启新章 ▏易我科技新办公区乔迁庆典隆重举行
2024年1月18日,易我科技新办公区乔迁庆典在热烈而喜庆的氛围中隆重举行。新办公区的投入使用,标志着易我科技将以崭新姿态迈向新的发展阶段。 ▲ 易我科技新办公区 随着公司业务的不断发展和壮大,为了更好地适应公司发展的需要,…...

多个地区地图可视化
1. 配置Json文件 1.1 获得每个省份的json数据 打开 阿里云数据可视化平台 主页。 在搜索框中输入所需省份。 将json文件下载到本地。 1.2 将各省份的json数据进行融合 打开 geojson.io 主页 点击 open,上传刚刚下载的 json 文件,对多个省份不断…...

学习使用paddle来构造hrnet网络模型
1、首先阅读了hrnet的网络结构分析,了解到了网络构造如下: 参考博文姿态估计之2D人体姿态估计 - (HRNet)Deep High-Resolution Representation Learning for Human Pose Estimation(多家综合)-CSDN博客 最…...
Redis 多线程操作同一个Key如何保证一致性?
单线程模型:Redis 是单线程模型的,它通过一个事件循环来处理所有客户端请求,这意味着 Redis 在任何时刻只会处理一个请求,从而避免了并发访问同一个 Key 的问题。这种设计保证了数据的一致性。 乐观锁(Watchÿ…...
单链表合并
【问题描述】 建立两个升序排列的单链表,表中元素的数据类型是整数,将建立的两个链表合并为 一个新的升序的单链表,并输出显示已合并好的有序的单链表 。 【输入形式】分别输入两组数据,两组数据以回车分隔;每组数据…...

【如何像网吧一样弄个游戏菜单在家里】
GGmenu 个人家庭版游戏、应用管理 桌面图标管理器...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...