当前位置: 首页 > news >正文

k8s的安装

k8s的安装

1.创建主机,设置ip,hostname,关闭firewalld,selinux,NetworkManager

编号主机名称ip
1k8s-master192.168.118.66
2k8s-node01192.168.118.77
3k8s-node02192.168.118.88

2.设置主机之间的ssh免密

[root@k8s-master ~]# ssh-keygen
[root@k8s-master ~]# ssh-copy-id root@192.168.118.77
[root@k8s-master ~]# ssh-copy-id root@192.168.118.88

3.三个节点yum源配置

--docker

--k8s

--清空以及创建缓存  yum clean all  && make makecach

--四个源镜像 aliyun ,epel, kubernetes,docker-ce

4.三个节点主机映射

[root@k8s-master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.118.66    k8s-master
192.168.118.77    k8s-node01
192.168.118.88    k8s-node02

测试:主机之间能使用域名相互ping通

[root@k8s-master ~]# ping k8s-node01
PING k8s-node01 (192.168.118.77) 56(84) bytes of data.
64 bytes from k8s-node01 (192.168.118.77): icmp_seq=1 ttl=64 time=0.426 ms
64 bytes from k8s-node01 (192.168.118.77): icmp_seq=2 ttl=64 time=0.342 ms

5.三个节点安装常用软件

[root@k8s-master ~]# yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git tree -y

6.三个节点关闭关闭防火墙, NetworkManager ,selinux ,SWAP虚拟分区

   32  systemctl disable --now firewalld
   33  systemctl disable --now NetworkManager
   34  setenforce 0
   35  vim /etc/selinux/config 


   37  swapoff -a && sysctl -w vm.swappiness=0
   38  sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

7.三个节点同步时间,同时设置计划任务

   40  yum -y install ntpdate
   41  ntpdate time2.aliyun.com
   42  crontab -e

        */5 * * * * /usr/sbin/ntpdate time2.aliyun.com
[root@k8s-master ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com

8.三个节点配置limit

   43  ulimit -SHn 65535    # 单个进程可以打开的文件数量将被限制为 65535
   45  vim /etc/security/limits.conf 

 # 末尾添加如下内容* soft nofile 65536* hard nofile 131072* soft nproc 65535* hard nproc 655350* soft memlock unlimited* hard memlock unlimited

9.下载yaml文件,从gitee上下载,配置的pod的yaml文件和docker-compose.yaml文件相似,等我的k8s架构搭建起来以后,在添加功能性pod的时候使用

   46  cd /root/
   47  git clone https://gitee.com/dukuan/k8s-ha-install.git

10.三个节点ipvs的配置

   50  yum install ipvsadm ipset sysstat conntrack libseccomp -y
   51   modprobe -- ip_vs
   52   modprobe -- ip_vs_rr
   53   modprobe -- ip_vs_wrr
   54  modprobe -- ip_vs_sh
   55   modprobe -- nf_conntrack 

   62  vim /etc/modules-load.d/ipvs.conf

# 在系统启动时加载下列 IPVS 和相关功能所需的模块
ip_vs					# 负载均衡模块
ip_vs_lc			# 用于实现基于连接数量的负载均衡算法
ip_vs_wlc			# 用于实现带权重的最少连接算法的模块
ip_vs_rr			# 负载均衡rr算法模块
ip_vs_wrr			# 负载均衡wrr算法模块
ip_vs_lblc		# 负载均衡算法,它结合了最少连接(LC)算法和基于偏置的轮询(Round Robin with Bias)算法
ip_vs_lblcr		# 用于实现基于链路层拥塞状况的最少连接负载调度算法的模块
ip_vs_dh			# 用于实现基于散列(Hashing)的负载均衡算法的模块
ip_vs_sh			# 用于源端负载均衡的模块
ip_vs_fo			# 用于实现基于本地服务的负载均衡算法的模块
ip_vs_nq			# 用于实现NQ算法的模块
ip_vs_sed			# 用于实现随机早期检测(Random Early Detection)算法的模块
ip_vs_ftp			# 用于实现FTP服务的负载均衡模块
ip_vs_sh
nf_conntrack	# 用于跟踪网络连接的状态的模块
ip_tables			# 用于管理防护墙的机制
ip_set				# 用于创建和管理IP集合的模块
xt_set				# 用于处理IP数据包集合的模块,提供了与iptables等网络工具的接口
ipt_set				# 用于处理iptables规则集合的模块
ipt_rpfilter	# 用于实现路由反向路径过滤的模块
ipt_REJECT		# iptables模块之一,用于将不符合规则的数据包拒绝,并返回特定的错误码
ipip					# 用于实现IP隧道功能的模块,使得数据可以在两个网络之间进行传输

#查看已写入加载的模块
   65  lsmod | grep -e ip_vs -e nf_conntrack

11.三个节点k8s的内核加载
   66  vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-iptables = 1		# 控制网络桥接与iptables之间的网络转发行为
net.bridge.bridge-nf-call-ip6tables = 1		# 用于控制网络桥接(bridge)的IP6tables过滤规则。当该参数设置为1时,表示启用对网络桥接的IP6tables过滤规则
fs.may_detach_mounts = 1		# 用于控制文件系统是否允许分离挂载,1表示允许
net.ipv4.conf.all.route_localnet = 1		# 允许本地网络上的路由。设置为1表示允许,设置为0表示禁止。
vm.overcommit_memory=1		# 控制内存分配策略。设置为1表示允许内存过量分配,设置为0表示不允许。
vm.panic_on_oom=0		# 决定当系统遇到内存不足(OOM)时是否产生panic。设置为0表示不产生panic,设置为1表示产生panic。
fs.inotify.max_user_watches=89100		# inotify可以监视的文件和目录的最大数量。
fs.file-max=52706963		# 系统级别的文件描述符的最大数量。
fs.nr_open=52706963			# 单个进程可以打开的文件描述符的最大数量。
net.netfilter.nf_conntrack_max=2310720		# 网络连接跟踪表的最大大小。
net.ipv4.tcp_keepalive_time = 600		# TCP保活机制发送探测包的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes = 3		# TCP保活机制发送探测包的最大次数。
net.ipv4.tcp_keepalive_intvl =15		# TCP保活机制在发送下一个探测包之前等待响应的时间(秒)。
net.ipv4.tcp_max_tw_buckets = 36000	# TCP TIME_WAIT状态的bucket数量。
net.ipv4.tcp_tw_reuse = 1		# 允许重用TIME_WAIT套接字。设置为1表示允许,设置为0表示不允许。
net.ipv4.tcp_max_orphans = 327680		# 系统中最大的孤套接字数量。
net.ipv4.tcp_orphan_retries = 3			# 系统尝试重新分配孤套接字的次数。
net.ipv4.tcp_syncookies = 1		# 用于防止SYN洪水攻击。设置为1表示启用SYN cookies,设置为0表示禁用。
net.ipv4.tcp_max_syn_backlog = 16384		# SYN连接请求队列的最大长度。
net.ipv4.ip_conntrack_max = 65536		# IP连接跟踪表的最大大小。
net.ipv4.tcp_max_syn_backlog = 16384		# 系统中最大的监听队列的长度。
net.ipv4.tcp_timestamps = 0		# 用于关闭TCP时间戳选项。
net.core.somaxconn = 16384		# 用于设置系统中最大的监听队列的长度

#保存后,所有节点重启,保证重启后内核依然加载
   67  reboot

12.三个节点卸载podman,安装docker-ce docker-ce-cli  containerd

[root@k8s-master ~]#  yum remove -y podman runc containerd

[root@k8s-master ~]#  yum install docker-ce docker-ce-cli containerd.io -y

13.三个节点配置containerd所需要的核心模块 overlay,br_nerfilter

[root@k8s-master ~]# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter

[root@k8s-master ~]# modprobe overlay
[root@k8s-master ~]# modprobe br_netfilter

[root@k8s-master ~]# cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
> net.bridge.bridge-nf-call-iptables = 1
> net.ipv4.ip_forward = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1

[root@k8s-master ~]# sysctl --system

14.containerd配置文件

[root@k8s-master ~]# mkdir -p /etc/containerd

#读取containerd的配置并保存到/etc/containerd/config.toml
[root@k8s-master ~]# containerd config default | tee /etc/containerd/config.toml

[root@k8s-master ~]# vim /etc/containerd/config.toml 

修改63行和127行

# 启动containerd并设置开机启动

[root@k8s-master ~]# systemctl enable --now containerd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.
[root@k8s-master ~]# systemctl status containerd.service 
● containerd.service - containerd container runtime
   Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2024-09-11 11:40:38 CST; 52s ago

15.三个节点配置远程客户端访问

[root@k8s-master ~]# cat > /etc/crictl.yaml <<EOF
> runtime-endpoint: unix:///run/containerd/containerd.sock
> image-endpoint:unix:///run/containerd/containerd.sock
> timeout: 10
> debug: false
> EOF

16.三节点安装kubernetes组件

   86  yum -y install kubeadm-1.28* kubectl-1.28* kubelet-1.28*
   87  yum list installed | grep kube
   88  systemctl daemon-reload 
   89  systemctl enable --now kubelet.service 
   90  systemctl status kubelet.service 

--异常:

如果Kubelet无法正常启动,检查swap是否已经取消虚拟分区,查看/var/log/message如果是没
有/var/lib/kublet/cofig.yaml文件,可能需要重新安装


   91  yum -y remove kubelet-1.28*
   92  yum -y install kubelet-1.28*
   93  systemctl daemon-reload 
   94  systemctl enable --now kubelet.service 
   95  systemctl status kubelet.service 

kubeadm依赖与kubelet:
   96  yum -y install kubeadm-1.28*

[root@k8s-master ~]# systemctl status kubelet.service 
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2024-09-11 14:25:11 CST; 16s ago

#kubelet端口是10248,10250,10255三个端口

[root@k8s-master ~]# netstat -lnput | grep kubelet
tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      11597/kubelet       
tcp6       0      0 :::10250                :::*                    LISTEN      11597/kubelet       
tcp6       0      0 :::10255                :::*                    LISTEN      11597/kubelet       

 

只对k8s-master操作

17.初始化

--拉取镜像

[root@k8s-master ~]# vim kubeadm-config.yaml####修改文件里的IP地址为本机的IP(k8s-master)apiVersion: kubeadm.k8s.io/v1beta3              # 指定Kubernetes配置文件的版本,使用的是kubeadm API的v1beta3版本
bootstrapTokens:                # 定义bootstrap tokens的信息。这些tokens用于在Kubernetes集群初始化过程中进行身份验证
- groups:               # 定义了与此token关联的组- system:bootstrappers:kubeadm:default-node-token token: 7t2weq.bjbawausm0jaxury                # bootstrap token的值ttl: 24h0m0s          # token的生存时间,这里设置为24小时usages:                       # 定义token的用途- signing             # 数字签名- authentication              # 身份验证
kind: InitConfiguration         # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置
localAPIEndpoint:               # 定义本地API端点的地址和端口advertiseAddress: 192.168.118.66bindPort: 6443
nodeRegistration:               # 定义节点注册时的配置criSocket: unix:///var/run/containerd/containerd.sock         # 容器运行时(CRI)的套接字路径name: k8s-master              # 节点的名称taints:               # 标记- effect: NoSchedule          # 免调度节点key: node-role.kubernetes.io/control-plane          # 该节点为控制节点
---
apiServer:              # 定义了API服务器的配置certSANs:             # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可- 192.168.118.66timeoutForControlPlane: 4m0s          # 控制平面的超时时间,这里设置为4分钟
apiVersion: kubeadm.k8s.io/v1beta3              # 指定API Server版本
certificatesDir: /etc/kubernetes/pki    # 指定了证书的存储目录
clusterName: kubernetes         # 定义了集群的名称为"kubernetes"
controlPlaneEndpoint: 192.168.118.66:6443                # 定义了控制节点的地址和端口
controllerManager: {}           # 控制器管理器的配置,为空表示使用默认配置
etcd:           # 定义了etcd的配置local:                # 本地etcd实例dataDir: /var/lib/etcd              # 数据目录
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers            # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜像仓库。
kind: ClusterConfiguration              # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置
kubernetesVersion: v1.28.2              # 指定了kubernetes的版本
networking:             # 定义了kubernetes集群网络设置dnsDomain: cluster.local              # 定义了集群的DNS域为:cluster.localpodSubnet: 172.16.0.0/16              # 定义了Pod的子网serviceSubnet: 10.96.0.0/16   # 定义了服务的子网
scheduler: {}           # 使用默认的调度器行为# 将旧的kubeadm配置文件转换为新的格式[root@k8s-master ~]#  kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml
[root@k8s-master ~]# ls
anaconda-ks.cfg  k8s-ha-install  kubeadm-config.yaml  new.yaml
104  kubeadm config images pull --config new.yaml 
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.28.2
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.9-0
[config/images] Pulled registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.10.1

--初始化

[root@k8s-master ~]# kubeadm init --config /root/new.yaml  --upload-certs
[init] Using Kubernetes version: v1.28.2
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR Port-10250]: Port 10250 is in use
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
[root@k8s-master ~]# systemctl stop kubelet.service 
Warning: kubelet.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@k8s-master ~]# kubeadm init --config /root/new.yaml  --upload-certskubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury \--discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2 

--保存toke

保存token,其他人要用我们的集群,就用这个,如果又初始化后,token会变

[root@k8s-master ~]# vim token

kubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury \
    --discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2 

配置故障

--主机配置2核2G

--echo 1 > /proc/net/ipv4/ip_forward

--kubelet无法启动

   --swap虚拟分区没关

   --没有配置文件

--查看日志/var/log/message

18.将工作节点加入到集群   

--在k8s-node01和k8s-node02上,先systemctl stop kubelet

[root@k8s-node01 ~]# kubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury \
> --discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2
[preflight] Running pre-flight checks
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR Port-10250]: Port 10250 is in use
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
您在 /var/spool/mail/root 中有新邮件
[root@k8s-node01 ~]# systemctl stop kubelet.service 
Warning: kubelet.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@k8s-node01 ~]# kubeadm join 192.168.118.66:6443 --token 7t2weq.bjbawausm0jaxury --discovery-token-ca-cert-hash sha256:edc1d608d110c230dfb234262534921f2d3855b5d33d662aef79a8684c3896f2Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

--添加不成功

   --kubelet没有stop

   --ip转发没有

   --token重启初始化或者生成token

   --node中containerd是否正常

--查看节点以及pod状态

#查看节点 查看在集群中的主机的状态

[root@k8s-master ~]# kubectl get nodes
E0911 15:40:13.584913   12962 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused

 

[root@k8s-master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES           AGE     VERSION
k8s-master   NotReady   control-plane   47m     v1.28.2
k8s-node01   NotReady   <none>          3m16s   v1.28.2
k8s-node02   NotReady   <none>          2m35s   v1.28.2

 

[root@k8s-master ~]# vim .bashrc 

#查看所有的pod状态

[root@k8s-master ~]# kubectl get po -A
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-6554b8b87f-thzlw             0/1     Pending   0          53m
kube-system   coredns-6554b8b87f-zdhh9             0/1     Pending   0          53m
kube-system   etcd-k8s-master                      1/1     Running   0          53m
kube-system   kube-apiserver-k8s-master            1/1     Running   0          53m
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          53m
kube-system   kube-proxy-8jk8f                     1/1     Running   0          8m40s
kube-system   kube-proxy-dvfx4                     1/1     Running   0          9m21s
kube-system   kube-proxy-g226c                     1/1     Running   0          53m
kube-system   kube-scheduler-k8s-master            1/1     Running   0          53m

#查看pod完整信息

[root@k8s-master ~]# kubectl get po -Aowide
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
kube-system   coredns-6554b8b87f-thzlw             0/1     Pending   0          56m   <none>           <none>       <none>           <none>
kube-system   coredns-6554b8b87f-zdhh9             0/1     Pending   0          56m   <none>           <none>       <none>           <none>
kube-system   etcd-k8s-master                      1/1     Running   0          56m   192.168.118.66   k8s-master   <none>           <none>
kube-system   kube-apiserver-k8s-master            1/1     Running   0          56m   192.168.118.66   k8s-master   <none>           <none>
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          56m   192.168.118.66   k8s-master   <none>           <none>
kube-system   kube-proxy-8jk8f                     1/1     Running   0          11m   192.168.118.88   k8s-node02   <none>           <none>
kube-system   kube-proxy-dvfx4                     1/1     Running   0          12m   192.168.118.77   k8s-node01   <none>           <none>
kube-system   kube-proxy-g226c                     1/1     Running   0          56m   192.168.118.66   k8s-master   <none>           <none>
kube-system   kube-scheduler-k8s-master            1/1     Running   0          56m   192.168.118.66   k8s-master   <none>           <none>

#状态(status)

pending:挂起  ,当前pod没有工作

running:  运行中  ,当前pod正常工作

ContainerCreating:  正在创建容器

19.部署calico的pod

# 找到配置的calico.yaml文件
cd /root/k8s-ha-install && git checkout manual-installation-v1.28.x && cd calico/
# 修改配置文件,将文件中的POD_CIDR替换成 172.16.0.0/16
- name:
CALICO_IPV4POOL_CIDR
value: "172.16.0.0/16"
#创建pod
kubectl apply -f calico.yaml     

 # 找到配置文件calico
 [root@k8s-master ~]# cd k8s-ha-install/
 # 切换 git 分⽀
 [root@k8s-master k8s-ha-install]# git checkout manual-installation-v1.28.x
 分支 manual-installation-v1.28.x 设置为跟踪来自 origin 的远程分支 manual-installation-v1.28.x。
 切换到一个新分支 'manual-installation-v1.28.x'
 # 修改 Pod ⽹段
 [root@k8s-master k8s-ha-install]# ls
 bootstrap  CoreDNS       dashboard               metrics-server  README.md
 calico     csi-hostpath  kubeadm-metrics-server  pki             snapshotter
 [root@k8s-master k8s-ha-install]# cd calico/
 [root@k8s-master calico]# ls
 calico.yaml
 [root@k8s-master calico]# vim /etc/kubernetes/manifests/kube-controller-manager.yaml
 # 获取已定义的Pod⽹段
 [root@k8s-master calico]# POD_SUBNET=`cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr= | awk -F= '{print $NF}'` 
 [root@k8s-master calico]# echo $POD_SUBNET
 172.16.0.0/16
 # 修改配置文件,将文件中的POD_CIDR替换成172.16.0.0/16
 [root@k8s-master calico]# sed -i "s#POD_CIDR#${POD_SUBNET}#g" calico.yaml
 # 创建pod
 [root@k8s-master calico]# kubectl apply -f calico.yaml 

错误:

在创建pod的时候部分容器处于pending, ContainerCreating,Init时是因为网络不行,或者是更新不好,执行 yum -y update && reboot

结果:

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   18h   v1.28.2
k8s-node01   Ready    <none>          18h   v1.28.2
k8s-node02   Ready    <none>          18h   v1.28.2
[root@k8s-master ~]# kubectl get po -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS      AGE
kube-system   calico-kube-controllers-6d48795585-7vjgk   1/1     Running   0             17h
kube-system   calico-node-qqds6                          1/1     Running   0             17h
kube-system   calico-node-rn2nb                          1/1     Running   0             17h
kube-system   calico-node-w5bnt                          1/1     Running   0             17h
kube-system   coredns-6554b8b87f-thzlw                   1/1     Running   0             18h
kube-system   coredns-6554b8b87f-zdhh9                   1/1     Running   0             18h
kube-system   etcd-k8s-master                            1/1     Running   1 (22m ago)   18h
kube-system   kube-apiserver-k8s-master                  1/1     Running   1 (22m ago)   18h
kube-system   kube-controller-manager-k8s-master         1/1     Running   2 (35s ago)   18h
kube-system   kube-proxy-8jk8f                           1/1     Running   1 (21m ago)   18h
kube-system   kube-proxy-dvfx4                           1/1     Running   1 (22m ago)   18h
kube-system   kube-proxy-g226c                           1/1     Running   1 (22m ago)   18h
kube-system   kube-scheduler-k8s-master                  1/1     Running   1 (22m ago)   18h

处理calico网络无法连接
--镜像下载的网络是否正常
--更新kernel版本 yum -y update kernel

   

相关文章:

k8s的安装

k8s的安装 1.创建主机&#xff0c;设置ip,hostname&#xff0c;关闭firewalld,selinux,NetworkManager 编号主机名称ip1k8s-master192.168.118.662k8s-node01192.168.118.773k8s-node02192.168.118.88 2.设置主机之间的ssh免密 [rootk8s-master ~]# ssh-keygen [rootk8s-ma…...

Qt中样式表常用的属性名称定义

Qt中&#xff0c;用好样式表&#xff0c;不但可以做出意想不到的酷炫效果&#xff0c;有时候也能减轻开发量&#xff0c;可能由于你不了解某些样式使用&#xff0c;想破脑袋通过代码实现的效果&#xff0c;反倒不如别人用样式&#xff0c;一两句样式脚本就搞定。 Qt中&#xff…...

React源码学习(一):如何学习React源码

本系列源码学习&#xff0c;是基于 v16.13.1&#xff0c;v17.x与v16.x区别并不太大&#xff01; 一、如何正确的学习React源码&#xff1f; 找到Github&#xff0c;转到React仓库&#xff0c;fork / clone源码&#xff1a;React 查看Readme&#xff0c;在Documentation中有Cont…...

云计算服务的底层,虚拟化技术的实现原理

虚拟化技术&#xff1a; 一、 从cpu说起&#xff0c; intel和amd等cpu制造商 为了提高其cpu对 虚拟化程序的运算速度&#xff0c; 给cpu硬件里面 增加了指令集 VMLAUNCH, VMRESUME, VMEXIT, VMXOFF 这些指令集称为硬件辅助虚拟化技术的指令集。 ---------------------…...

大数据Flink(一百一十六):Flink SQL的时间属性

文章目录 Flink SQL的时间属性 一、Flink 三种时间属性简介 二、Flink 三种时间属性的应用场景 三、​​​​​​​SQL 指定时间属性的两种方式 四、​​​​​​​​​​​​​​SQL 处理时间DDL定义 五、​​​​​​​​​​​​​​SQL 事件时间DDL定义 Flink SQL的时…...

Ansible自动化部署kubernetes集群

机器环境介绍 1.1. 机器信息介绍 IP hostname application CPU Memory 192.168.204.129 k8s-master01 etcd&#xff0c;kube-apiserver&#xff0c;kube-controller-manager&#xff0c;kube-scheduler,kubelet,kube-proxy,containerd 2C 4G 192.168.204.130 k8s-w…...

网络通信流程

目录 ♫IP地址 ♫子网掩码 ♫MAC地址 ♫相关设备 ♫ARP寻址 ♫网络通信流程 ♫IP地址 我们已经知道 IP 地址由网络号主机号组成&#xff0c;根据 IP 地址的不同可以有5钟划分网络号和主机号的方案&#xff1a; 其中&#xff0c;各类地址的表示范围是&#xff1a; 分类范围适用…...

数据结构一:绪论

&#xff08;一&#xff09;数据结构的基本概念 1.相关名词 【1】数据 1.信息的载体&#xff0c;描述客观事物 2.能被输入到计算机中 3.能被计算机程序识别和处理的符号的集合。 【2】数据元素 1.数据的一个“个体” 2.数据的基本单位 3.有时候也被称为元素、结点、顶点…...

使用OpenFeign在不同微服务之间传递用户信息时失败

文章目录 起因原因解决方法&#xff1a; 起因 从pay-service中实现下单时&#xff0c;会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中&#xff0c;不仅要Enable O…...

js中【Worker】相关知识点详细解读

什么是 JavaScript 中的 Worker&#xff1f; JavaScript 中的 Worker 是一个可以在后台线程中运行代码的 API&#xff0c;这样可以避免主线程&#xff08;通常是 UI 线程&#xff09;被阻塞。使用 Worker 时&#xff0c;JavaScript 可以在多线程环境中工作&#xff0c;解决了单…...

使用Apify加载Twitter消息以进行微调的完整指南

# 使用Apify加载Twitter消息以进行微调的完整指南## 引言在自然语言处理领域&#xff0c;微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息&#xff0c;以便进一步进行微调。## 主要内容### 使用Apify导出推文首先&#xff0c;我…...

【C++算法】滑动窗口

长度最小的子数组 题目链接&#xff1a; 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法原理 代码步骤&#xff1a; 设置left0&#xff0c;right0设置sum0&#xff0c;len0遍历l…...

(c++)猜数字(含根据当前时间生成伪随机数代码)

#include<iostream> #include<ctime>/*用srand((unsigned int)time(NULL));要包含这个头文件&#xff0c;如果没有这两个&#xff0c;rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子&#xff0c;…...

优化批处理流程:自定义BatchProcessorUtils的设计与应用

优化批处理流程&#xff1a;自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;个人小工具类 在我们开发过程中&#xff0c;处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...

Framebuffer应用编程

目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数&#xff0c;分析Framebuffer…...

MongoDB根据字段内容长度查询语句

db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释&#xff1a; 1-"source_data" : /中…...

Android中的单例模式

在Android开发中&#xff0c;单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...

python做游戏好用吗

Python做游戏是完全可以的&#xff0c;而且也非常简单&#xff0c;有一个专门针对游戏开发的平台&#xff08;模块&#xff09;—pygame&#xff0c;允许开发人员快速设计游戏而又摆脱了低级语言的束缚&#xff0c;下面我简单介绍一下这个模块的安装和使用&#xff1a; 1、首先…...

常用游戏运行库下载

包含以下资源&#xff1a; DirectX Repair.exe DirectX Repair(Enhanced Edition). vcredist C2013 x64.exe 微软常用运行库合集 下载链接...

(1)CLIP

CLIP 概述1. 训练与推理2. 最终效果与局限性3.后续应用3.1 DALL-E3.2 ActionCLIP3.3 CLIP-Event 概述 CLIP&#xff1a;contrastive language-image pretraining 利用文本的监督信号训练一个迁移能力特别强的视觉模型 传统的视觉模型&#xff0c;人工标注图像&#xff0c;那么…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...