容器云计算,Devops,DBA,网络安全。 https://www.micoder.cc/index.php Simple-Log 2024-04-26 22:40:21 https://www.micoder.cc/themes/default/logo.jpg https://www.micoder.cc/index.php MySQL8的binlog文件保存时间 admin /blog.php?id=2754 MySQL8的binlog文件保存时间


MySQL expire_logs_days 参数用于控制Binlog文件的保存时间,当Binlog文件存在的时间超过该参数设置的阈值时,

Binlog文件就会被自动清除,该参数的时间单位是天,设置为0,表示Binlog文件永不过期,即不自动清除Binlog文件。



在MySQL 8.0 版本,expire_logs_days参数被废弃,使用新的参数binlog_expire_logs_seconds代替,新参数的时间粒度是秒,能够更加灵活的控制Binlog文件过期时间。


expire_logs_days:
默认0代表99天,也是最大值

动态修改:Yes
作用范围:Global
取值范围:0~99

默认值:0


binlog_expire_logs_seconds:


动态修改:Yes
作用范围:Global
取值范围:0~4294967295
默认值:2592000(30天)

 

mysql>  show variables like 'log_%';
+----------------------------------------+----------------------------------------+
| Variable_name                          | Value                                  |
+----------------------------------------+----------------------------------------+
| log_bin                                | ON                                     |
| log_bin_basename                       | /var/lib/mysql/mysql-bin               |
| log_bin_index                          | /var/lib/mysql/mysql-bin.index         |
| log_bin_trust_function_creators        | OFF                                    |
| log_bin_use_v1_row_events              | OFF                                    |
| log_error                              | stderr                                 |
| log_error_services                     | log_filter_internal; log_sink_internal |
| log_error_suppression_list             |                                        |
| log_error_verbosity                    | 2                                      |
| log_output                             | FILE                                   |
| log_queries_not_using_indexes          | OFF                                    |
| log_raw                                | OFF                                    |
| log_replica_updates                    | ON                                     |
| log_slave_updates                      | ON                                     |
| log_slow_admin_statements              | OFF                                    |
| log_slow_extra                         | OFF                                    |
| log_slow_replica_statements            | OFF                                    |
| log_slow_slave_statements              | OFF                                    |
| log_statements_unsafe_for_binlog       | ON                                     |
| log_throttle_queries_not_using_indexes | 0                                      |
| log_timestamps                         | UTC                                    |
+----------------------------------------+----------------------------------------+
21 rows in set (0.04 sec)


mysql> 
mysql> 
mysql> 
mysql> show variables like '%expire%';
+--------------------------------+---------+
| Variable_name                  | Value   |
+--------------------------------+---------+
| binlog_expire_logs_auto_purge  | ON      |
| binlog_expire_logs_seconds     | 2592000 |
| disconnect_on_expired_password | ON      |
| expire_logs_days               | 0       |
+--------------------------------+---------+
4 rows in set (0.03 sec)

使用set命令配置过期日期

mysql> set global  binlog_expire_logs_seconds=60*60*24;
Query OK, 0 rows affected (0.00 sec)




MySQL 8.0关闭binlog默认开启binlog,即使在my.ini或my.cnf的[mysqld]部分没有。

MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉一部分没用的日志。

windows


1.登录mysql数据库,mysql -uroot –p
2.查看binlog是否开启,log_bin的状态未ON,表明binlog日志开启

mysql> show variables like 'log_%';
+----------------------------------------+---------------------------------------------------------------+
| Variable_name                          | Value                                                         |
+----------------------------------------+---------------------------------------------------------------+
| log_bin                                | ON                                                            |
| log_bin_basename                       | C:\Program Files\mysql-8.0.15-winx64\data\binlog              |
| log_bin_index                          | C:\Program Files\mysql-8.0.15-winx64\data\binlog.index        |
| log_bin_trust_function_creators        | OFF                                                           |
| log_bin_use_v1_row_events              | OFF                                                           |
| log_error                              | C:\Program Files\mysql-8.0.15-winx64\data\DESKTOP-SK4KOON.err |
| log_error_services                     | log_filter_internal; log_sink_internal                        |
| log_error_suppression_list             |                                                               |
| log_error_verbosity                    | 2                                                             |
| log_output                             | FILE                                                          |
| log_queries_not_using_indexes          | OFF                                                           |
| log_slave_updates                      | ON                                                            |
| log_slow_admin_statements              | OFF                                                           |
| log_slow_extra                         | OFF                                                           |
| log_slow_slave_statements              | OFF                                                           |
| log_statements_unsafe_for_binlog       | ON                                                            |
| log_throttle_queries_not_using_indexes | 0                                                             |
| log_timestamps                         | UTC                                                           |
+----------------------------------------+---------------------------------------------------------------+
18 rows in set, 1 warning (0.00 sec)

3.查看binary log(我这个之前已经清理过了)

mysql> show binary logs;
+---------------+-----------+-----------+
| Log_name      | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000007 |       199 | No        |
| binlog.000008 |       155 | No        |
+---------------+-----------+-----------+
2 rows in set (0.00 sec)

4.删除binlog日志文件,切勿删除正在使用的binlog!!(所以删除老年的即可,不要全删)

不要轻易手动去删除binlog,会导致binlog.index和真实存在的binlog不匹配,使用PURGE,根据自己需求改写下面命令

mysql> PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY);//删除1天前的binlog日志文件
或者
mysql>purge binary logs before '2019-11-25 13:09:51';  //将指定时间之前的binlog清掉:
或者
mysql>purge binary logs to 'bin.000055';  //将bin.000055之前的binlog清掉:

5.设置binlog的过期时间,binlog失效日期参数为 binlog_expire_logs_seconds,默认2592000(30天)过期,可以设置 604800(7天)

mysql> show variables like '%expire%';
+--------------------------------+---------+
| Variable_name                  | Value   |
+--------------------------------+---------+
| binlog_expire_logs_seconds     | 2592000 |
| disconnect_on_expired_password | ON      |
| expire_logs_days               | 0       |
+--------------------------------+---------+
3 rows in set (0.00 sec)


mysql> set global  binlog_expire_logs_seconds=60*60*24;
Query OK, 0 rows affected (0.00 sec)


mysql> show variables like '%expire%';
+--------------------------------+---------+
| Variable_name                  | Value   |
+--------------------------------+---------+
| binlog_expire_logs_seconds     | 604800  |
| disconnect_on_expired_password | ON      |
| expire_logs_days               | 0       |
+--------------------------------+---------+
3 rows in set (0.00 sec)


mysql> flush logs;
Query OK, 0 rows affected, 64 warnings (0.16 sec)

binlog_expire_logs_seconds设置之后不会立即清除过期的,触发条件是:

  • binlog大小超过max_binlog_size
  • 手动执行flush logs
  • 重新启动时(MySQL将会new一个新文件用于记录binlog)

如果binlog非常多,不要轻易设置改参数,有可能导致io争用,所以我先使用purge命令清除老年的binlog。
过期时间设置的要适当,对于主从复制,要看从库的延迟决定过期时间,避免主库binlog还未传到从库便因过期而删除,导致主从不一致!!!

5.5设置过期时间也可以直接修改my.ini配置文件,关闭修改再重启

expire_logs_days = 7 #自动删除15天前的日志。默认值为0,表示从不删除。

6.如果你希望关闭binlog
8.0版本情况下,关闭mysql服务,找到my.ini, 在[mysqld] 下添加 skip-log-bin,然后重启MySQL,不可以不关闭的情况下,修改重启。
在关闭后,可以下使用reset master把现有的binlog都删除掉,因为binlog关闭了,不会有正在使用的binlog,所以没问题。

 [mysqld] 
...
...
skip-log-bin

也有说想要关闭binlog,只将这两条注释(添加#),不知道哪个对,可能都对,或者是版本原因,我没试

#log-bin=mysql-bin #注释掉之后,会关闭binlog日志
#binlog_format=mixed #注释掉之后,会关闭binlog日志

如果找不到my.ini,可以手动打开显示C盘的隐藏文件选项(不会百度),就会出现ProgramData文件夹,找到mysql文件夹,就可以找到my.ini文件




使用RESET MASTER可以删除任何二进制日志文件及其相关的二进制日志索引文件,从而使主数据库恢复到开始二进制日志记录之前的状态

mysql>RESET MASTER;

 

]]>
Thu, 25 Apr 2024 10:18:52 +0800 /blog.php?id=2754
openEuler部署Kubernetes 1.29.4版本集群 admin /blog.php?id=2753 openEuler部署Kubernetes 1.29.4版本集群

一、Kubernetes集群节点准备

1.1 主机操作系统说明

序号 操作系统及版本 备注
1 CentOS7u9或 OpenEuler2203

1.2 主机硬件配置说明

需求 CPU 内存 硬盘 角色 主机名
值 8C 8G 1024GB master k8s-master01
值 8C 16G 1024GB worker(node) k8s-worker01
值 8C 16G 1024GB worker(node) k8s-worker02

1.3 主机配置

1.3.1 主机名配置

由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为worker节点,名称分别为:k8s-worker01及k8s-worker02

# master节点

hostnamectl set-hostname k8s-master01

#worker01节点
hostnamectl set-hostname k8s-worker01
 
#worker02节点
hostnamectl set-hostname k8s-worker02

1.3.2 IP地址,名称解析与互信

#IP配置这里不再讲解

#下面是名称解析配置
[root@k8s-master01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.11 k8s-master01
192.168.0.12 k8s-worker01
192.168.0.13 k8s-worker02

#主机互信配置  
[root@k8s-master01 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:Rr6W4rdnY350fzMeszeWFR/jUJt0VOZ3yZECp5VJJQA root@k8s-master01
The key's randomart image is:
+---[RSA 3072]----+
|         E.o+=++*|
|            ++o*+|
|        .  .  +oB|
|       o     . *o|
|        S     o =|
|       . o  . ..o|
|      . +  . . +o|
|     . o. = .  *B|
|      ...*.o  oo*|
+----[SHA256]-----+
[root@k8s-master01 ~]# for i in {11..13};do ssh-copy-id 192.168.0.${i};done

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.11 (192.168.0.11)' can't be established.
ED25519 key fingerprint is SHA256:s2R582xDIla4wyNozHa/HEmRR7LOU4WAciEcAw57U/Q.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? 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

Authorized users only. All activities may be monitored and reported.
root@192.168.0.11's password: 

Number of key(s) added: 1

1.3.4 防火墙配置

所有主机均需要操作。

关闭现有防火墙firewalld

# systemctl disable firewalld

# systemctl stop firewalld

systemctl disable --now firewalld

查看firewalld状态

# firewall-cmd --state

not running

参考运行命令:

[root@k8s-master01 ~]# for i in {11..13};do ssh  192.168.0.${i} 'systemctl disable --now firewalld' ;done

Authorized users only. All activities may be monitored and reported.

Authorized users only. All activities may be monitored and reported.

Authorized users only. All activities may be monitored and reported.
[root@k8s-master01 ~]# for i in {11..13};do ssh  192.168.0.${i} 'firewall-cmd --state' ;done

Authorized users only. All activities may be monitored and reported.
not running

Authorized users only. All activities may be monitored and reported.
not running

Authorized users only. All activities may be monitored and reported.
not running
 

1.3.5 SELINUX配置

所有主机均需要操作。修改SELinux配置需要重启操作系统。

# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# sestatus

参考运行命令:

[root@k8s-master01 ~]# for i in {11..13};do ssh  192.168.0.${i} 'sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config' ;done

Authorized users only. All activities may be monitored and reported.

Authorized users only. All activities may be monitored and reported.

Authorized users only. All activities may be monitored and reported.
 
[root@k8s-master01 ~]# for i in {11..13};do ssh  192.168.0.${i} 'sestatus' ;done

Authorized users only. All activities may be monitored and reported.
SELinux status:                 disabled

Authorized users only. All activities may be monitored and reported.
SELinux status:                 disabled

Authorized users only. All activities may be monitored and reported.
SELinux status:                 disabled
 

1.3.6 时间同步配置

所有主机均需要操作。最小化安装系统需要安装ntpdate软件。

# crontab -l

0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
for i in {11..13};do ssh  192.168.0.${i} ' echo '0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com' >> /etc/crontab' ;done
#设置上海时区,东八区

timedatectl set-timezone Asia/Shanghai

for i in {11..13};do ssh  192.168.0.${i} ' timedatectl set-timezone Asia/Shanghai' ;done
 

1.3.7 升级操作系统内核

centos系统需要升级内容,具体百度,OpenEuler2203不需要

1.3.8 配置内核路由转发及网桥过滤

所有主机均需要操作。

添加网桥过滤及内核转发配置文件

sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
# 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
vm.swappiness = 0
EOF
# 配置加载br_netfilter模块

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

#加载br_netfilter overlay模块
modprobe br_netfilter
modprobe overlay
#查看是否加载

# lsmod | grep br_netfilter

br_netfilter           22256  0
bridge                151336  1 br_netfilter

# 使其生效

 sysctl --system

# 使用默认配置文件生效
sysctl -p 

# 使用新添加配置文件生效
sysctl -p /etc/sysctl.d/k8s.conf  

1.3.9 安装ipset及ipvsadm

所有主机均需要操作。

安装ipset及ipvsadm

# yum -y install ipset ipvsadm
配置ipvsadm模块加载方式
添加需要加载的模块

# cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
 
授权、运行、检查是否加载
chmod 755 /etc/sysconfig/modules/ipvs.module &&  /etc/sysconfig/modules/ipvs.module

查看对应的模块是否加载成功
# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
k8s集群默认采用iptables 方式,如果集群在部署后已经是iptables 可以修改为ipvs模式

1.在master节点执行
# kubectl edit cm kube-proxy -n kube-system
...
    kind: KubeProxyConfiguration
    metricsBindAddress: ""
    mode: "ipvs"   # 此处修改为ipvs,默认为空
    nodePortAddresses: null
 
...

1.在master节点执行
# kubectl edit cm kube-proxy -n kube-system
...
    kind: KubeProxyConfiguration
    metricsBindAddress: ""
    mode: "ipvs"   # 此处修改为ipvs,默认为空
    nodePortAddresses: null
 
...
 
2.查看当前的kube-proxy
# kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS      AGE
calico-kube-controllers-84c476996d-8kz5d   1/1     Running   0             62m
calico-node-8tb29                          1/1     Running   0             62m
calico-node-9dkpd                          1/1     Running   0             62m
calico-node-wnlgv                          1/1     Running   0             62m
coredns-74586cf9b6-jgtlq                   1/1     Running   0             84m
coredns-74586cf9b6-nvkz4                   1/1     Running   0             84m
etcd-k8s-master01                          1/1     Running   2             84m
kube-apiserver-k8s-master01                1/1     Running   0             84m
kube-controller-manager-k8s-master01       1/1     Running   1 (69m ago)   84m
kube-proxy-l2vfq                           1/1     Running   0             45m
kube-proxy-v4drh                           1/1     Running   0             45m
kube-proxy-xvtnh                           1/1     Running   0             45m
kube-scheduler-k8s-master01                1/1     Running   1 (69m ago)   84m
 
3.删除当前的kube-proxy
# kubectl delete pod kube-proxy-f7rcx kube-proxy-ggchx kube-proxy-hbt94 -n kube-system
pod "kube-proxy-f7rcx" deleted
pod "kube-proxy-ggchx" deleted
pod "kube-proxy-hbt94" deleted
 
4.查看新自动创建的kube-proxy
# kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-74586cf9b6-5bfk7             1/1     Running   0          77m
coredns-74586cf9b6-d29mj             1/1     Running   0          77m
etcd-master-140                      1/1     Running   0          78m
kube-apiserver-master-140            1/1     Running   0          78m
kube-controller-manager-master-140   1/1     Running   0          78m
kube-proxy-7859q                     1/1     Running   0          44s
kube-proxy-l4gqx                     1/1     Running   0          43s
kube-proxy-nnjr2                     1/1     Running   0          43s
kube-scheduler-master-140            1/1     Running   0          78m
 

1.3.10 关闭SWAP分区

修改完成后需要重启操作系统,如不重启,可临时关闭,命令为swapoff -a

永远关闭swap分区,需要重启操作系统

# cat /etc/fstab

......

# /dev/mapper/centos-swap swap                    swap    defaults        0 0

在上一行中行首添加#

二、containerd容器环境安装

2.1 安装containerd环境包

所有主机均需要操作。

 # 打包的文件

for i in {11..13};do ssh  192.168.0.${i} ' wget https://blog-source-mkt.oss-cn-chengdu.aliyuncs.com/resources/k8s/kubeadm%20init/k8s1.29.tar.gz'; done

# 解压containerd并安装
for i in {11..13};do ssh  192.168.0.${i} ' tar -zxvf /root/k8s1.29.tar.gz'; done

for i in {11..13};do ssh  192.168.0.${i} ' tar -zxvf /root/workdir/containerd-1.7.11-linux-amd64.tar.gz && mv /root/bin/* /usr/local/bin/ && rm -rf /root/bin'; done
# 创建服务,所有主机都要操作
cat << EOF > /usr/lib/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF
# 启动容器服务
for i in {11..13};do ssh  192.168.0.${i} 'systemctl daemon-reload && systemctl enable --now containerd '; done

# 安装runc
for i in {11..13};do ssh  192.168.0.${i} 'install -m 755 /root/workdir/runc.amd64 /usr/local/sbin/runc '; done
# 安装cni插件
for i in {11..13};do ssh  192.168.0.${i} 'mkdir -p /opt/cni/bin && tar -xzvf  /root/workdir/cni-plugins-linux-amd64-v1.4.0.tgz -C /opt/cni/bin/ '; done
# 生成容器配置文件并修改
for i in {11..13};do ssh  192.168.0.${i} 'mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.toml '; done 
 
# 修改沙箱镜像,所有主机都要操作

sed -i 's#sandbox_image = "registry.k8s.io/pause:.*"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml
#重启containerd
systemctl restart containerd

2.2 master主机安装k8s

# 配置k8s v2.19源,所有节点均要安装
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
# 安装k8s工具,所有节点均要安装
yum clean all && yum makecache

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
#  配置kubelet为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下文件内容。所有节点均要安装

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

或是下面命令
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
systemctl enable kubelet 

#注意,kubelet不要启动,kubeadm会自动启动,如果已启动,安装会报错。

# 安装k8s命令,主master节点执行,这里只有1.29.4版本镜像

kubeadm init --apiserver-advertise-address=192.168.0.11  --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.29.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.224.0.0/16
# 最后执行以下命令
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

2.3 安装calico网络插件

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
# 最后查看节点与pod支行情况

kubectl get nodes
 
kubectl get pods -A
]]>
Fri, 19 Apr 2024 16:58:49 +0800 /blog.php?id=2753
使用 kubeadm 构建 Kubernetes v1.29 集群 admin /blog.php?id=2752 使用 kubeadm 构建 Kubernetes v1.29 集群

 

如何使用 kubeadm 设置三节点 Kubernetes v1.29 集群

 

介绍

  • kubeadm 是用于创建 Kubernetes 集群的工具
  • 它通过引导控制平面、加入节点等来自动创建 Kubernetes 集群
  • 遵循 Kubernetes 发布周期
  • 由 Kubernetes 社区维护的开源工具

先决条件

  • 为控制平面 node-1 和 node-2 创建三个 Ubuntu 22.04 LTS 实例
  • 每个实例的最低规格为 2 个 CPU 和 2 GB RAM
  • 必须在实例之间启用联网
  • 实例之间必须允许使用所需的端口
  • 必须在实例上禁用交换

初始配置

在控制平面、节点 1 和节点 2 上设置唯一的主机名 设置主机名后,从当前会话注销并重新登录以反映更改

 

# control-plane

sudo hostnamectl set-hostname control-plane

 

# node-1

sudo hostnamectl set-hostname node-1

 

# node-2

sudo hostnamectl set-hostname node-2

更新控制平面、节点 1 和节点 2 上的主机文件,以启用通过主机名进行通信

 

# control-plane, node-1 and node-2

sudo vi /etc/hosts

172.31.81.34 control-plane
172.31.81.93 node-1
172.31.90.71 node-2

 

在控制平面、节点 1 和节点 2 上禁用交换,如果 fstab 文件中存在交换条目,则注释掉该行

从 v1.22 开始支持 swap,从 v1.28 开始,swap 仅对 cgroup v2 支持。kubelet 的 NodeSwap 功能门卡是 beta 版,但默认禁用。如果 kubelet 未正确配置为使用 swap,则必须禁用 swap。

 

# control-plane, node-1 and node-2

sudo swapoff -a

sudo vi /etc/fstab
  # comment out swap entry

要在控制平面 node-1 和 node-2 上将 containerd 设置为容器运行时,首先需要加载一些内核模块并修改系统设置

 

# control-plane, node-1 and node-2

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

sudo modprobe overlay

sudo modprobe br_netfilter

 

# control-plane, node-1 and node-2

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

sudo sysctl --system

安装

加载内核模块并修改系统设置后,现在我们可以在控制平面、节点 1 和节点 2 上安装 containerd 运行时

 

# control-plane, node-1 and node-2

sudo apt update

sudo apt install -y containerd

安装包后,在控制平面、node-1 和 node-2 上为 containerd 生成默认配置文件

 

# control-plane, node-1 and node-2

sudo mkdir -p /etc/containerd

sudo containerd config default | sudo tee /etc/containerd/config.toml

在 containerd 配置文件中将 SystemdCgroup 值更改为 true,然后重新启动服务

 

# control-plane, node-1 and node-2

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

sudo systemctl restart containerd

我们需要在控制平面 node-1 和 node-2 上安装一些必备软件包,以配置 Kubernetes 软件包存储库

 

# control-plane, node-1 and node-2

sudo apt update

sudo apt install -y apt-transport-https ca-certificates curl gpg

在控制平面、node-1 和 node-2 上下载 Kubernetes 软件包存储库的公共签名密钥

 

# control-plane, node-1 and node-2

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

在控制平面 node-1 和 node-2 上添加相应的 Kubernetes apt 存储库

 

# control-plane, node-1 and node-2

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

安装 kubeadm、kubelet 和 kubectl 工具,并在控制平面、node-1 和 node-2 上保存它们的包版本

 

# control-plane, node-1 and node-2

sudo apt update

sudo apt install -y kubeadm=1.29.0-1.1 kubelet=1.29.0-1.1 kubectl=1.29.0-1.1

sudo apt-mark hold kubeadm kubelet kubectl

在控制平面上使用 kubeadm 初始化集群

 

# control-plane

sudo kubeadm init --pod-network-cidr 192.168.0.0/16 --kubernetes-version 1.29.0

安装完成后,在控制平面上设置对集群的访问权限

 

# control-plane

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

通过列出节点来验证我们的集群状态但是我们的节点处于 NotReady 状态,因为我们尚未设置网络

 

# control-plane

kubectl get nodes
NAME            STATUS     ROLES           AGE   VERSION
control-plane   NotReady   control-plane   45s   v1.29.0

kubectl get nodes -o wide
NAME            STATUS     ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
control-plane   NotReady   control-plane   52s   v1.29.0   172.31.81.34   <none>        Ubuntu 22.04.3 LTS   6.2.0-1012-aws   containerd://1.7.2

将 Calico 网络插件安装到集群并验证节点的状态

 

# control-plane

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/calico.yaml

 

# control-plane

kubectl -n kube-system get pods
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-7c968b5878-x5trl   1/1     Running   0          46s
calico-node-grrf4                          1/1     Running   0          46s
coredns-76f75df574-cdcj2                   1/1     Running   0          4m19s
coredns-76f75df574-z4gxg                   1/1     Running   0          4m19s
etcd-control-plane                         1/1     Running   0          4m32s
kube-apiserver-control-plane               1/1     Running   0          4m34s
kube-controller-manager-control-plane      1/1     Running   0          4m32s
kube-proxy-78gqq                           1/1     Running   0          4m19s
kube-scheduler-control-plane               1/1     Running   0          4m32s

kubectl get nodes
NAME            STATUS   ROLES           AGE     VERSION
control-plane   Ready    control-plane   4m53s   v1.29.0

启用网络后,将我们的工作负载节点加入集群 使用 kubeadm 从控制平面获取 join 命令

 

# control-plane

kubeadm token create --print-join-command

从控制平面检索到 join 命令后,在 node-1 和 node-2 中执行它

 

# node-1 and node-2

sudo kubeadm join 172.31.81.34:6443 --token kvzidi.g65h3s8psp2h3dc6 --discovery-token-ca-cert-hash sha256:56c208595372c1073b47fa47e8de65922812a6ec322d938bd5ac64d8966c1f27

验证我们的集群和所有节点是否都处于就绪状态

 

# control-plane

kubectl get nodes
NAME            STATUS   ROLES           AGE     VERSION
control-plane   Ready    control-plane   7m50s   v1.29.0
node-1          Ready    <none>          76s     v1.29.0
node-2          Ready    <none>          79s     v1.29.0

kubectl get nodes -o wide
NAME            STATUS   ROLES           AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
control-plane   Ready    control-plane   8m12s   v1.29.0   172.31.81.34   <none>        Ubuntu 22.04.3 LTS   6.2.0-1012-aws   containerd://1.7.2
node-1          Ready    <none>          98s     v1.29.0   172.31.81.93   <none>        Ubuntu 22.04.3 LTS   6.2.0-1012-aws   containerd://1.7.2
node-2          Ready    <none>          101s    v1.29.0   172.31.90.71   <none>        Ubuntu 22.04.3 LTS   6.2.0-1012-aws   containerd://1.7.2

应用程序部署

部署一个 Nginx Pod,将其公开为 ClusterIP 并验证其状态

 

# control-plane

kubectl run nginx --image=nginx --port=80 --expose
service/nginx created
pod/nginx created

kubectl get pods nginx -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP              NODE     NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          34s   192.168.247.1   node-2   <none>           <none>

kubectl get svc nginx
NAME    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
nginx   ClusterIP   10.102.86.253   <none>        80/TCP    56s

使用控制平面中的端口转发访问 Nginx 默认页面

 

# control-plane

kubectl port-forward svc/nginx 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

curl -i http://localhost:8080
HTTP/1.1 200 OK
Server: nginx/1.25.3

这就是现在的全部内容

参考

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

]]>
Fri, 19 Apr 2024 09:17:19 +0800 /blog.php?id=2752
openeuler系统增加虚拟声卡-模拟声卡 admin /blog.php?id=2751  openeuler系统增加虚拟声卡-模拟声卡


在hyper-v虚拟机中安装openeuler系统,再安装ukui图形界面后,

发现没有声卡,检索信息发现hyper-v没法给虚拟机增加声卡。

这样就只能增加虚拟声卡了。


经过bing信息后,发现一个简单的方法,增加 snd-dummy驱动模块后,就可以打开声卡了。


modprobe snd-dummy pcm_devs=1

]]>
Thu, 18 Apr 2024 08:56:15 +0800 /blog.php?id=2751
OpenEuler安装ukui图形界面无法登陆root账号 admin /blog.php?id=2750 OpenEuler安装ukui图形界面无法登陆root账号


安装ukui后,切换图形登陆,只有普通账号,没有root账号的解决方法:


openEuler22.03及之后的版本在终端执行


/usr/share/lightdm/lightdm.conf.d/95-ukui-greeter.conf 或是 /etc/lightdm/lightdm.conf

添加以下两行:

greeter-show-manual-login=true

all-guest=false

开启登录选项:



注销或者重启lightdm服务(systemctl restart lightdm)]]>
Wed, 17 Apr 2024 11:40:05 +0800 /blog.php?id=2750
MySQL字段编码不一致导致的“Illegal mix of collations”错误 admin /blog.php?id=2749 MySQL字段编码不一致导致的“Illegal mix of collations”错误


在MySQL数据库中,当字段的字符集和排序规则不一致时,可能会出现“Illegal mix of collations”错误。

如报错: 

### Cause: java.sql.SQLException: Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='
; uncategorized SQLException; SQL state [HY000]; error code [1267]; Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='; nested exception is java.sql.SQLException: Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='] with root cause


这个错误通常发生在执行涉及不同字符集和排序规则的数据比较操作时。以下是解决这个问题的步骤:
步骤一:检查数据库和表的字符集
首先,您需要确定数据库、表和字段的字符集设置。可以使用以下命令来查看:

  1. SHOW CREATE DATABASE your_database_name;
  2. SHOW CREATE TABLE your_table_name;

这将显示数据库和表的创建语句,从中可以查看字符集设置。


步骤二:统一字符集和排序规则


如果发现数据库、表或字段的字符集不一致,您需要将它们统一到一个字符集和排序规则下。

可以使用以下命令来修改数据库、表或字段的字符集和排序规则:

  1. ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. ALTER TABLE your_table_name CHANGE column_name column_name column_type CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

在上述命令中,将your_database_name替换为实际的数据库名称,your_table_name替换为实际的表名称,column_name替换为实际的列名称,column_type替换为列的数据类型。

select

table_schema,

table_name,

column_name,

character_set_name,

collation_name

from

information_schema.columns

where

TABLE_SCHEMA ='db2'

order by

table_schema,

table_name,

ordinal_position;

通过以上命令查看哪些表或字段名规则不一致,可以根据情况修改


步骤三:检查数据的一致性


在进行字符集和排序规则的修改后,您需要检查数据的一致性,确保没有数据丢失或损坏。可以使用以下命令来检查数据的一致性:

  1. CHECK TABLE your_table_name;

这将检查表中的数据是否符合当前的字符集和排序规则要求。如果出现错误,请根据错误信息进行相应的处理。
注意事项:在进行字符集和排序规则的修改之前,请务必备份数据库或表的数据,以防意外情况发生。

此外,修改字符集和排序规则可能会对已有的应用程序产生影响,请确保在修改之前进行充分的测试和验证。


总结:解决MySQL字段编码不一致导致的“Illegal mix of collations”错误需要统一数据库、表和字段的字符集和排序规则。通过检查数据库、表和字段的字符集设置,并进行相应的修改,可以避免出现这个错误。在进行修改之前,请务必备份数据并测试应用程序的兼容性。


]]>
Mon, 08 Apr 2024 14:45:36 +0800 /blog.php?id=2749
AI生成用来清理iptables规则的脚本 admin /blog.php?id=2748 AI生成用来清理iptables规划的脚本


1,有多台主机使用iptables写入的相同的规则,给input链一个关于auth的规则,

具体规划如下:


2,现需要删除,

使用ai生成了一个shell脚本,经过修改后内容如下


# 检查iptables中是否有匹配"auth"的规则
if iptables -nL | grep -q "auth"; then
    # 获取匹配"auth"的规则所在行号
    i=$(iptables -nL | grep -n "auth" | awk -F: '{print $1}')
    # 如果行号为3,则删除该规则并从/etc/sysconfig/iptables中删除匹配的行
    if [ "$i" -eq 3 ]; then
        iptables -D INPUT 1
        sed -i '/auth/d' /etc/sysconfig/iptables
    fi
fi


]]>
Tue, 02 Apr 2024 11:55:35 +0800 /blog.php?id=2748
GPT3.5生成的PLSQL代码用来删除与迁移大量对象 admin /blog.php?id=2747 GPT3.5生成的PLSQL代码用来删除与迁移大量对象

1,批量删除plsql

oracle通过imp导入大量对象到sysl用户下,现在需要批量删除

-----使用gpt-3.5生成plsql

DECLARE
    v_object_type VARCHAR2(50);
    v_object_name VARCHAR2(100);
BEGIN
    FOR obj IN (SELECT object_type, object_name
                FROM all_objects
                WHERE owner = 'SYSL'
                AND created >= TO_DATE('2024-03-12', 'YYYY-MM-DD'))
    LOOP
        v_object_type := obj.object_type;
        v_object_name := obj.object_name;
        
        BEGIN
            IF v_object_type = 'TABLE' THEN
                EXECUTE IMMEDIATE 'DROP TABLE SYSL.' || v_object_name;
                DBMS_OUTPUT.PUT_LINE('Table ' || v_object_name || ' dropped successfully.');
            ELSIF v_object_type = 'VIEW' THEN
                EXECUTE IMMEDIATE 'DROP VIEW SYSL.' || v_object_name;
                DBMS_OUTPUT.PUT_LINE('View ' || v_object_name || ' dropped successfully.');
            ELSIF v_object_type = 'PROCEDURE' THEN
                EXECUTE IMMEDIATE 'DROP PROCEDURE SYSL.' || v_object_name;
                DBMS_OUTPUT.PUT_LINE('Procedure ' || v_object_name || ' dropped successfully.');
            ELSIF v_object_type = 'FUNCTION' THEN
                EXECUTE IMMEDIATE 'DROP FUNCTION SYSL.' || v_object_name;
                DBMS_OUTPUT.PUT_LINE('Function ' || v_object_name || ' dropped successfully.');
            ELSIF v_object_type = 'PACKAGE' THEN
                EXECUTE IMMEDIATE 'DROP PACKAGE SYSL.' || v_object_name;
                DBMS_OUTPUT.PUT_LINE('Package ' || v_object_name || ' dropped successfully.');
            END IF;
        EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE('Error dropping ' || v_object_type || ' ' || v_object_name || ': ' || SQLERRM);
        END;
    END LOOP;
END;
/

2,批量迁移对象

此前导入对象没有进入sysl表空间,都是user表空间,现需要迁移到sysl表空间中
----使用gpt3.5生成的plsql代码

DECLARE
    CURSOR cur_move_objects IS
          SELECT OBJECT_NAME, OBJECT_TYPE
            FROM all_objects
           WHERE OWNER = 'SYSL'
             AND OBJECT_TYPE IN ('TABLE', 'INDEX', 'SEQUENCE', 'VIEW', 'PROCEDURE', 'FUNCTION', 'PACKAGE')
        ORDER BY 2;

    c_m cur_move_objects%ROWTYPE;
BEGIN
    FOR c_m IN cur_move_objects LOOP
        BEGIN
            IF c_m.OBJECT_TYPE IN ('TABLE', 'INDEX', 'SEQUENCE', 'VIEW') THEN
                EXECUTE IMMEDIATE 'ALTER ' || c_m.OBJECT_TYPE || '  SYSL.' || c_m.OBJECT_NAME || ' MOVE TABLESPACE SYSL';
                DBMS_OUTPUT.PUT_LINE(c_m.OBJECT_NAME || ' 的类型是: ' || c_m.OBJECT_TYPE || ', 迁移成功');
            ELSIF c_m.OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION', 'PACKAGE') THEN
                EXECUTE IMMEDIATE 'ALTER ' || c_m.OBJECT_TYPE || ' SYSL.' || c_m.OBJECT_NAME || ' COMPILE';
                DBMS_OUTPUT.PUT_LINE(c_m.OBJECT_NAME || ' 的类型是: ' || c_m.OBJECT_TYPE || ', 迁移成功');
            END IF;
        EXCEPTION
            WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE('Error moving ' || c_m.OBJECT_TYPE || ' ' || c_m.OBJECT_NAME || ': ' || SQLERRM);
        END;
    END LOOP;

    COMMIT;
END;
/
]]>
Tue, 12 Mar 2024 17:14:59 +0800 /blog.php?id=2747
openEuler 22.03系统上intel源码编译成rpm包方法 admin /blog.php?id=2746 openEuler 22.03系统上intel源码编译成rpm包方法


一、intel

环境

安装依赖:

 make 、gcc、kernel-devel、rpmbuild

 kernel-devel 包安装方法

     uname -r //获取内核版本

     yum search kernel-devel --showduplicates //获取和内核相同版本的kernel-devel包名
     
     yum install -y kernel-devel-4.19.90-2112.8.0.0131.oe1.aarch64 //安装软件包

系统版本:

    openEuler 22.03 SP1

i40编译步骤(其它驱动类似)

从官网(https://www.intel.cn/content/www/cn/zh/download-center/home.html 13)下载2.20.12版本的i40e源码包。

搜索i40e,可以看到相关的驱动链接,根据需要进行下载。

  1. tar xf i40e-2.20.12.tar.gz

  2. 按照后面“需要删除的内容”说明删除对应内容

  3. tar zcvf XX.tar.gz i40e-2.20.12

  4. rpmbuild -tb i40e-2.20.12.tar.gz

  5. cd /root/rpmbuild/RPMS/aarch64

  6. yum install -y i40e-2.20.12-1.aarch64.rpm

  7. modinfo i40e //查询驱动已经加载成功

需要删除的内容

i40e

删除/src/linux/auxiliary_bus.h文件中下面内容
 

删除/src/i40e_ethtool.c文件中下面内容

ice

删除/src/linux/auxiliary_bus.h文件中下面内容

删除/src/ice_ethtool.c文件中的下面内容

igb

删除src/igb_ethtool.c文件中的下面内容

ixgbe


FAQ

问题一:


解决方法:

cd /usr/src

ln -s /kernels/2.6.32-431.11.2.el6.x86_64/ linux

]]>
Tue, 27 Feb 2024 11:44:08 +0800 /blog.php?id=2746
openEuler-22.03 盘符重启会改变飘移解决方法 admin /blog.php?id=2745 openEuler-22.03 盘符重启会改变飘移解决方法

盘符漂移的原因:

1、 linux系统分配SCSI磁盘的机制是:根据插槽号顺序扫描磁盘(异步),每个SCSI盘有15个分区盘符可分配。

2、linux系统启动时,盘符分配机制:SCSI驱动探测到SCSI盘时分配盘符,先完成扫描任务的磁盘先分配空闲盘符。如果有槽位没有插入SCSI盘,不会保留盘符。如果该槽位后续热插入磁盘,则往后分配盘符。

3、linux系统热插拔SCSI盘时,盘符分配机制:SCSI盘被热拔时,原来的槽位和盘符会被释放。后续再热插SCSI盘时,不管是哪个槽位,系统根据未分配的index,按顺序分配盘符(不会再使用被拔除的盘符)。

解决办法:

要解决磁盘盘符漂移问题,一劳永逸的方法就是将磁盘槽位与盘符名做绑定;添加磁盘绑定的补丁。如果只针对磁盘挂载问题,可通过按标签或UUID挂载的方式解决。

方案1:根据ID访问磁盘(/dev/disk/by-id)

适用于裸盘无文件系统场景

方案2:根据挂载路径访问磁盘(/dev/disk/by-path)

适用于磁盘插槽位置不变场景

方案3:根据文件系统UUID访问磁盘(/dev/disk/by-uuid)

适用于有文件系统场景
存在硬盘故障raid卡等异常,进行更换uuid会变化,导致不能进入系统或者业务受损
注意:使用dd等类似命令把某个分区的内容写到另外一个分区,两个分区会有相同的uuid

这里使用类似方案1的策略,但是使用了udev对磁盘进行别名映射

通过命令

ls -l /dev/disk/by-id

查看磁盘的serial id
scsi开头的序列号是磁盘的serial id
wwn开头的序列号是磁盘的world wide name

在/etc/udev/rules.d/目录下新建文件99-rules.rules添加以下内容

KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_SERIAL}=="3600000.......", ENV{DEVTYPE}=="disk", SYMLINK+="huawei/disk01", OWNER="root", GROUP="disk", MODE="0660"

完成后使用

udevadm trigger --type=devices --action=change

使配置生效

用别名测试磁盘读写

可以在fstab中使用/huawei/disk01代替sda,由于/huawei/disk01绑定了这张硬盘的serial id所以在发生漂移的情况下也不影响和盘符相关的业务、系统功能。

]]>
Tue, 27 Feb 2024 09:12:19 +0800 /blog.php?id=2745
使用 Keepalived 和 HAproxy 创建高可用 Kubernetes 集群 admin /blog.php?id=2744

使用 Keepalived 和 HAproxy 创建高可用 Kubernetes 集群

高可用 Kubernetes 集群能够确保应用程序在运行时不会出现服务中断,这也是生产的需求之一。为此,有很多方法可供选择以实现高可用。

本教程演示了如何配置 Keepalived 和 HAproxy 使负载均衡、实现高可用。步骤如下:

  1. 准备主机。
  2. 配置 Keepalived 和 HAproxy。
  3. 使用 KubeKey 创建 Kubernetes 集群,并安装 KubeSphere。

集群架构

示例集群有三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟 IP 地址。本示例中的虚拟 IP 地址也可称为“浮动 IP 地址”。这意味着在节点故障的情况下,该 IP 地址可在节点之间漂移,从而实现高可用。


请注意,在本示例中,Keepalived 和 HAproxy 没有安装在任何主节点上。但您也可以这样做,并同时实现高可用。然而,配置两个用于负载均衡的特定节点(您可以按需增加更多此类节点)会更加安全。这两个节点上只安装 Keepalived 和 HAproxy,以避免与任何 Kubernetes 组件和服务的潜在冲突。

准备主机

IP 地址 主机名 角色
172.16.0.2 lb1 Keepalived & HAproxy
172.16.0.3 lb2 Keepalived & HAproxy
172.16.0.4 master1 master, etcd
172.16.0.5 master2 master, etcd
172.16.0.6 master3 master, etcd
172.16.0.7 worker1 worker
172.16.0.8 worker2 worker
172.16.0.9 worker3 worker
172.16.0.10   虚拟 IP 地址

有关更多节点、网络、依赖项等要求的信息,请参见多节点安装

配置负载均衡

Keepalived 提供 VRRP 实现,并允许您配置 Linux 机器使负载均衡,预防单点故障。HAProxy 提供可靠、高性能的负载均衡,能与 Keepalived 完美配合。

由于 lb1lb2 上安装了 Keepalived 和 HAproxy,如果其中一个节点故障,虚拟 IP 地址(即浮动 IP 地址)将自动与另一个节点关联,使集群仍然可以正常运行,从而实现高可用。若有需要,也可以此为目的,添加更多安装 Keepalived 和 HAproxy 的节点。

先运行以下命令安装 Keepalived 和 HAproxy。

yum install keepalived haproxy psmisc -y

HAproxy

  1. 在两台用于负载均衡的机器上运行以下命令以配置 Proxy(两台机器的 Proxy 配置相同):

    vi /etc/haproxy/haproxy.cfg
    
  2. 以下是示例配置,供您参考(请注意 server 字段。请记住 6443apiserver 端口):

    global
        log /dev/log  local0 warning
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy.pid
        maxconn     4000
        user        haproxy
        group       haproxy
        daemon
       
       stats socket /var/lib/haproxy/stats
       
    defaults
      log global
      option  httplog
      option  dontlognull
            timeout connect 5000
            timeout client 50000
            timeout server 50000
       
    frontend kube-apiserver
      bind *:6443
      mode tcp
      option tcplog
      default_backend kube-apiserver
       
    backend kube-apiserver
        mode tcp
        option tcplog
        option tcp-check
        balance roundrobin
        default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
        server kube-apiserver-1 172.16.0.4:6443 check # Replace the IP address with your own.
        server kube-apiserver-2 172.16.0.5:6443 check # Replace the IP address with your own.
        server kube-apiserver-3 172.16.0.6:6443 check # Replace the IP address with your own.
    
  3. 保存文件并运行以下命令以重启 HAproxy。

    systemctl restart haproxy
    
  4. 使 HAproxy 在开机后自动运行:

    systemctl enable haproxy
    
  5. 确保您在另一台机器 (lb2) 上也配置了 HAproxy。

Keepalived

两台机器上必须都安装 Keepalived,但在配置上略有不同。

  1. 运行以下命令以配置 Keepalived。

    vi /etc/keepalived/keepalived.conf
    
  2. 以下是示例配置 (lb1),供您参考:

    global_defs {
      notification_email {
      }
      router_id LVS_DEVEL
      vrrp_skip_check_adv_addr
      vrrp_garp_interval 0
      vrrp_gna_interval 0
    }
       
    vrrp_script chk_haproxy {
      script "killall -0 haproxy"
      interval 2
      weight 2
    }
       
    vrrp_instance haproxy-vip {
      state BACKUP
      priority 100
      interface eth0                       # Network card
      virtual_router_id 60
      advert_int 1
      authentication {
        auth_type PASS
        auth_pass 1111
      }
      unicast_src_ip 172.16.0.2      # The IP address of this machine
      unicast_peer {
        172.16.0.3                         # The IP address of peer machines
      }
       
      virtual_ipaddress {
        172.16.0.10/24                  # The VIP address
      }
       
      track_script {
        chk_haproxy
      }
    }
    

    备注

    • 对于 interface 字段,您必须提供自己的网卡信息。您可以在机器上运行 ifconfig 以获取该值。

    • unicast_src_ip 提供的 IP 地址是您当前机器的 IP 地址。对于也安装了 HAproxy 和 Keepalived 进行负载均衡的其他机器,必须在字段 unicast_peer 中输入其 IP 地址。

  3. 保存文件并运行以下命令以重启 Keepalived。

    systemctl restart keepalived
    
  4. 使 Keepalived 在开机后自动运行:

    systemctl enable keepalived
    
  5. 确保您在另一台机器 (lb2) 上也配置了 Keepalived。

验证高可用

在开始创建 Kubernetes 集群之前,请确保已经测试了高可用。

  1. 在机器 lb1 上,运行以下命令:

    [[email protected] ~]# ip a s
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 52:54:9e:27:38:c8 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.2/24 brd 172.16.0.255 scope global noprefixroute dynamic eth0
           valid_lft 73334sec preferred_lft 73334sec
        inet 172.16.0.10/24 scope global secondary eth0 # The VIP address
           valid_lft forever preferred_lft forever
        inet6 fe80::510e:f96:98b2:af40/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    
  2. 如上图所示,虚拟 IP 地址已经成功添加。模拟此节点上的故障:

    systemctl stop haproxy
    
  3. 再次检查浮动 IP 地址,您可以看到该地址在 lb1 上消失了。

    [[email protected] ~]# ip a s
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 52:54:9e:27:38:c8 brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.2/24 brd 172.16.0.255 scope global noprefixroute dynamic eth0
           valid_lft 72802sec preferred_lft 72802sec
        inet6 fe80::510e:f96:98b2:af40/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    
  4. 理论上讲,若配置成功,该虚拟 IP 会漂移到另一台机器 (lb2) 上。在 lb2 上运行以下命令,这是预期的输出:

    [[email protected] ~]# ip a s
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 52:54:9e:3f:51:ba brd ff:ff:ff:ff:ff:ff
        inet 172.16.0.3/24 brd 172.16.0.255 scope global noprefixroute dynamic eth0
           valid_lft 72690sec preferred_lft 72690sec
        inet 172.16.0.10/24 scope global secondary eth0   # The VIP address
           valid_lft forever preferred_lft forever
        inet6 fe80::f67c:bd4f:d6d5:1d9b/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
    
  5. 如上所示,高可用已经配置成功。

使用 KubeKey 创建 Kubernetes 集群

KubeKey 是一款用来创建 Kubernetes 集群的工具,高效而便捷。请按照以下步骤下载 KubeKey。

GitHub Release Page 下载 KubeKey 或者直接使用以下命令。

curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -

首先运行以下命令,以确保您从正确的区域下载 KubeKey。

export KKZONE=cn

运行以下命令来下载 KubeKey:

curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -

备注

下载 KubeKey 之后,如果您将其转移到访问 Googleapis 受限的新机器上,请务必再次运行 export KKZONE=cn,然后继续执行以下步骤。

备注

通过以上命令,可以下载 KubeKey 的最新版本 (v2.0.0)。您可以更改命令中的版本号来下载特定的版本。

使 kk 成为可执行文件:

chmod +x kk

使用默认配置创建一个示例配置文件。此处以 Kubernetes v1.21.5 作为示例。

./kk create config --with-kubesphere v3.2.1 --with-kubernetes v1.21.5

备注

  • 安装 KubeSphere 3.2.1 的建议 Kubernetes 版本:v1.19.x、v1.20.x、v1.21.x 或 v1.22.x(实验性支持)。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.21.5。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵
  • 如果您没有在本步骤的命令中添加标志 --with-kubesphere,那么除非您使用配置文件中的 addons 字段进行安装,或者稍后使用 ./kk create cluster 时再添加该标志,否则 KubeSphere 将不会被部署。
  • 如果您添加标志 --with-kubesphere 时未指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。

部署 KubeSphere 和 Kubernetes

运行上述命令后,将创建配置文件 config-sample.yaml。编辑文件以添加机器信息、配置负载均衡器等。

备注

如果自定义文件名,那么文件名可能会有所不同。

config-sample.yaml 示例

...
spec:
  hosts:
  - {name: master1, address: 172.16.0.4, internalAddress: 172.16.0.4, user: root, password: Testing123}
  - {name: master2, address: 172.16.0.5, internalAddress: 172.16.0.5, user: root, password: Testing123}
  - {name: master3, address: 172.16.0.6, internalAddress: 172.16.0.6, user: root, password: Testing123}
  - {name: worker1, address: 172.16.0.7, internalAddress: 172.16.0.7, user: root, password: Testing123}
  - {name: worker2, address: 172.16.0.8, internalAddress: 172.16.0.8, user: root, password: Testing123}
  - {name: worker3, address: 172.16.0.9, internalAddress: 172.16.0.9, user: root, password: Testing123}
  roleGroups:
    etcd:
    - master1
    - master2
    - master3
    master:
    - master1
    - master2
    - master3
    worker:
    - worker1
    - worker2
    - worker3
  controlPlaneEndpoint:
    domain: lb.kubesphere.local
    address: 172.16.0.10   # The VIP address
    port: 6443
...

备注

  • 请使用您自己的 VIP 地址来替换 controlPlaneEndpoint.address 的值。
  • 有关更多本配置文件中不同参数的信息,请参见多节点安装

开始安装

完成配置之后,可以执行以下命令开始安装:

./kk create cluster -f config-sample.yaml

验证安装

  1. 运行以下命令以检查安装日志。

    kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
    
  2. 看到以下信息时,表明高可用集群已成功创建。

    #####################################################
    ### Welcome to KubeSphere! ###
    #####################################################
       
    Console: http://172.16.0.4:30880
    Account: admin
    Password: [email protected]
       
    NOTES:
      1. After you log into the console, please check the
         monitoring status of service components in
         the "Cluster Management". If any service is not
         ready, please wait patiently until all components
         are up and running.
      2. Please change the default password after login.
       
    #####################################################
    https://kubesphere.io             2020-xx-xx xx:xx:xx
    #####################################################
    
]]>
Tue, 06 Feb 2024 11:36:02 +0800 /blog.php?id=2744
尚硅谷YYDS (课件资料) admin /blog.php?id=2743 尚硅谷YYDS (课件资料)

面试大保健

链接:https://pan.baidu.com/s/1duUHb4AwOnW9jycDnUCRVA

提取码:undf


尚硅谷大数据技术之 StarRocks

链接:https://pan.baidu.com/s/1mrW115g6fp_rb-BK9e1lcg

提取码:yrh7


尚硅谷大数据技术之数据湖 Hudi

链接:https://pan.baidu.com/s/1tSR8wVo6ZjZCEmgYA3--Fg

提取码:mi3d


尚硅谷大数据技术之 Doris

链接:https://pan.baidu.com/s/1zKC8DWdV8KhLzSH3Wf6v-w

提取码:za93


尚硅谷大数据技术之数据湖 Iceberg

链接:https://pan.baidu.com/s/1ad6jaqWlTcMfsqNBxaRmvg

提取码:w1ru


尚硅谷大数据之 CDH6.3.2 安装

链接:https://pan.baidu.com/s/1gnTJBm51_dDDLyzeq6HxWg

提取码:b97t


尚硅谷大数据技术之流批一体 Streamxmx

链接:https://pan.baidu.com/s/1wc3iD7zO_-bKsWykpB4bog

提取码:cj3i


尚硅谷大数据技术之 Linux

链接:https://pan.baidu.com/s/1_y1wtOO3b3vFSWOQjCnB5Q

提取码:1ahq


尚硅谷大数据技术之 Shell

链接:https://pan.baidu.com/s/1CHbBvXlrNc2BAl7Bzp0O0Q

提取码:11x2


尚硅谷大数据技术之 Hadoop

链接:https://pan.baidu.com/s/1XzrB7USWcwX1bIVC8MKPeQ

提取码:xoor


尚硅谷大数据技术之 Zookeeper

链接:https://pan.baidu.com/s/1rMEhbYJ9d7zXm2jx9WUqAQ

提取码:qe46


尚硅谷大数据技术之 HadoopHA

链接:https://pan.baidu.com/s/1ZCiCvEs4gB5wFC9Og_7-gg

提取码:3r9r


尚硅谷大数据技术之 Hive

链接:https://pan.baidu.com/s/1RyxOD2-L3RvrX-HKiOaRNQ

提取码:o1cc


尚硅谷大数据技术之 IDEA

链接:https://pan.baidu.com/s/1-lV0FkW3HmQEB2XJ3x2p3w

提取码:o4a4


尚硅谷大数据技术之 Flume

链接: https://pan.baidu.com/s/1ujuJNKBdAhygtKPZjPi6Fg?pwd=naxb
提取码: naxb


尚硅谷大数据技术之 HBase

链接:https://pan.baidu.com/s/1d5umK7BCEALqzsnq7x7Q-Q

提取码:1bl4


尚硅谷大数据技术之 Kafka

链接:https://pan.baidu.com/s/14yRjwhscKN6nkeefiy3FiQ

提取码:5j8y


尚硅谷大数据技术之 Sqoop

链接:https://pan.baidu.com/s/1Qf6LF4sJGYGhv5XFY7vdpQ

提取码:3zrn


尚硅谷大数据技术之 Oozie

链接:https://pan.baidu.com/s/1hl4r5PQ_TLy0gF1uK9Cxlg

提取码:0kha


尚硅谷大数据技术之 Azkaban

链接:https://pan.baidu.com/s/1xTNOoJ07NumapeUaV2HwLw

提取码:bggh


尚硅谷大数据技术之 Kylin

链接:https://pan.baidu.com/s/1PaxFw0gMaI6zFLSstraK3A

提取码:uiak


尚硅谷大数据技术之 Impala

链接:https://pan.baidu.com/s/17Dz1SXxJHZ3xvtDDYrR-vg

提取码:5q7w


尚硅谷大数据项目之实时分析系统

链接:https://pan.baidu.com/s/1RmRNZIBk5mC3a2qKsBaGbw

提取码:p039


尚硅谷大数据技术之 Hue

链接:https://pan.baidu.com/s/1MMb5gF6T4oPPIHz4mDMSsg

提取码:kyxh


尚硅谷大数据技术之基于阿里云安装 CDH6.2

链接:https://pan.baidu.com/s/1rJOQjZq02u1MmY-Iygek_A

提取码:smud


尚硅谷大数据技术之基于虚拟机 CDH5.12.1(Kerberos、Sentry 等)

链接:https://pan.baidu.com/s/12LENKnSWQ86R6eFTD9rCiQ

提取码:7ayj


尚硅谷大数据项目之电商数仓

链接:https://pan.baidu.com/s/1cDjyvEJblrM0LX8W4NjnTg

提取码:6y49


尚硅谷大数据技术之 Atlas

链接:https://pan.baidu.com/s/1npaMNCaQlsJKt_hjX7li8w

提取码:d513


尚硅谷大数据技术之 atlas2.0

链接:https://pan.baidu.com/s/1bs1dpXa7mhgY7Y4PGN4wyQ

提取码:x7vk


尚硅谷大数据技术之 ClickHouse

链接:https://pan.baidu.com/s/1kQque0SxFTkYXs_xjjJafw

提取码:nz5g


尚硅谷大数据技术之 DataX

链接:https://pan.baidu.com/s/1hsM_Iky3WXrboR5hvM01Uw

提取码:zj1m


尚硅谷大数据技术之 Ambari

链接:https://pan.baidu.com/s/1ilS4prIy9ULYrY1oldfxfQ

提取码:bs5a


尚硅谷大数据技术之 Ranger

链接:https://pan.baidu.com/s/1HD8dnHDqWKbY8q-8z15GrQ

提取码:j7zh


尚硅谷大数据技术之 Scala

链接:https://pan.baidu.com/s/1rHdecATgnMrsX9nYDKY3Dw

提取码:p68v


尚硅谷大数据技术之 Scala 数据结构和算法

链接:https://pan.baidu.com/s/19K6edGVDh9vc5firKKHzWw

提取码:4jho


尚硅谷大数据技术之 Spark

链接:https://pan.baidu.com/s/1gVrMyfTwgYUDOAaP7RubVg

提取码:25b3


尚硅谷大数据技术之 Spark(晓峰)

链接:https://pan.baidu.com/s/1cPEK7p5lNC5MPKa2rKKF9Q

提取码:gdj5


尚硅谷大数据项目电商分析平台

链接:https://pan.baidu.com/s/1oYQL0fQEBZ1eFEDm7lX7Gg

提取码:u6w7


尚硅谷大数据技术之 ELK

链接:https://pan.baidu.com/s/1LKnljNo6thPBZ40SEfu3eA

提取码:3r24


尚硅谷大数据项目之 Spark 实时分析系统项目

链接:https://pan.baidu.com/s/1RIuiOFWpnUuPz-fwk4LV0Q

提取码:drg6


尚硅谷大数据技术之 Flink

链接:https://pan.baidu.com/s/1fBLa4RUHWSZdXV270U3A-A

提取码:x4gl


尚硅谷大数据技术之 FlinkSQL

链接:https://pan.baidu.com/s/1Rlv-51SlKGxNeJWUZ0iaLg

提取码:0vhj


尚硅谷大数据技术之机器学习和推荐系统

链接:https://pan.baidu.com/s/1lQPhGM-y9holhKKzrul1nQ

提取码:f0yw


尚硅谷大数据项目之电商推荐系统

链接:https://pan.baidu.com/s/1FMp3d35gQsIyg1QCClVlgg

提取码:px3q


尚硅谷运维技术之 Kubernetes(K8s)

链接:https://pan.baidu.com/s/1gLX_wbFft04EMuv83B-3Qg

提取码:sgwf


尚硅谷大数据技术之 Docker

链接:https://pan.baidu.com/s/1LWR-wO7JWSBMF0Nh1YEDXA

提取码:aaas


尚硅谷大数据技术之 Structured Steaming

链接:https://pan.baidu.com/s/1HPzWvYab30ROQfw3mCNoPQ

提取码:t4pr


基于阿里云搭建数据仓库(离线)

链接:https://pan.baidu.com/s/1WY8vkRXGJUUjc50HhjGt-w

提取码:rqk8


基于阿里云搭建实时数据仓库项目

链接:https://pan.baidu.com/s/1pMZs-2Cfn1qTWgoPecSnEw

提取码:lhvh


尚硅谷大数据技术之 ClickHouse

链接:https://pan.baidu.com/s/1hWvC6khGnN8waft1_ndsAg

提取码:d6ka


尚硅谷大数据技术之 DataX

链接:https://pan.baidu.com/s/1COCikGzhSmYD-KhkX7F2NA

提取码:nw1r


尚硅谷大数据技术之 Airflow(2.0)

链接:https://pan.baidu.com/s/1CZqwj78uj-Me-uWtfckrew

提取码:s2tb


尚硅谷大数据技术之 Ambari

链接:https://pan.baidu.com/s/104GGuDWsmmafeeyOZsha9A

提取码:6ssg


尚硅谷大数据技术之 MaxWell

链接:https://pan.baidu.com/s/1LiyimO9yS6tQS_o1JpGiWA

提取码:pjta


尚硅谷大数据技术之 Tidb

链接:https://pan.baidu.com/s/1kba6g2KuL9eTCuA9_lFm6Q

提取码:pz1p


尚硅谷大数据技术之 Canal 高可用

链接:https://pan.baidu.com/s/11OreKY1a9XjRbAtniS777Q

提取码:vwyu


尚硅谷大数据技术之 Tableau

链接:https://pan.baidu.com/s/1rTvzNg4bDl_EXSzIIIOOhg

提取码:zhyy


尚硅谷大数据技术之 Talend

链接:https://pan.baidu.com/s/1si7q4YJx9wybf6PCkVMf-A

提取码:hdn8


尚硅谷大数据技术之 pulsar

链接:https://pan.baidu.com/s/125_rlJKAdKu5jY9bl2c1gQ

提取码:u7zh


尚硅谷大数据技术之 Griffin

链接:https://pan.baidu.com/s/144kTPtYGA2LgpRLMKo49hA

提取码:angm


尚硅谷大数据技术之 Cassandra

链接:https://pan.baidu.com/s/1MqaatcnvAIqDTmJvK5Heaw

提取码:uvo0


尚硅谷大数据技术之 Spark 操作 Kudu

链接:https://pan.baidu.com/s/1wHeQVNY7s7r_1duK5HRBcw

提取码:byzt


尚硅谷大数据技术之 Kubernetes、Zabbix

链接:https://pan.baidu.com/s/1OmlCEa6HofCru4U5YEE86A

提取码:6yhb


尚硅谷大数据技术之 Ranger(Apache 版)

链接:https://pan.baidu.com/s/17s5VmcWkuwnQE6oiI-0akg

提取码:r988


尚硅谷大数据技术之 Kettle

链接:https://pan.baidu.com/s/1V5sK5lz-UeeClTgFHaAvnw

提取码:kqy3


尚硅谷大数据项目之实时数仓 2.0

链接:https://pan.baidu.com/s/1CuqBckkkFpk_jG4aIAYIgg

提取码:io5i


尚硅谷大数据之电商用户画像

链接:https://pan.baidu.com/s/1pZn5hmSdKlgVaaxvK00PFQ

提取码:slbm


尚硅谷大数据技术之 MongoDB 同步方案

链接:https://pan.baidu.com/s/1VW-UeZXG154U2_ZINdBBrQ

提取码:7tp7


尚硅谷大数据项目之离线数仓项目 2.0

链接:https://pan.baidu.com/s/1bpmzKUxeBeIs7a_rGaWGBQ

提取码:p0wn


尚硅谷大数据项目之实时数仓项目 13 天(spark+clickhouse+es)

链接:https://pan.baidu.com/s/1rqSqpk_TLLmANdZfksqw6w

提取码:p86v


尚硅谷大数据技术之数据质量

链接:https://pan.baidu.com/s/1J6MDPoNiwJSlcd_fAZ8qeQ

提取码:d9iw


尚硅谷大数据技术之 Debezium

链接:https://pan.baidu.com/s/1IIHPQaNQPcnaHQBVAxhO8w

提取码:lf3t


尚硅谷大数据技术之数据迁移

链接:https://pan.baidu.com/s/13mly68T-49ArXSVIDTWcOw

提取码:hoqc


尚硅谷大数据之 Sentry

链接:https://pan.baidu.com/s/1x2AkY_KZPfDsGbbW0pbe4Q

提取码:gt5s


尚硅谷大数据之 greenplum

链接:https://pan.baidu.com/s/1ZYt1BUC7vb2assmk5irgnQ

提取码:1wg0


尚硅谷大数据技术之 InfluxDB

链接:https://pan.baidu.com/s/1MglDjozn1hxa7NRyOsAGmQ

提取码:i1hu


尚硅谷大数据技术之 Filebeat

链接:https://pan.baidu.com/s/177THjwDVg-aDPMNuh1ASBw

提取码:nu1d


尚硅谷大数据技术之 Superset

链接:https://pan.baidu.com/s/1vAsjLeDKm7pI27HPIBeWlA

提取码:1f4x


尚硅谷大数据技术之 Saiku

链接:https://pan.baidu.com/s/1mYPawsdFT4VCFTX-8rkHAQ

提取码:db2j


尚硅谷大数据技术之 NiFi

链接:https://pan.baidu.com/s/1VZ8qlibxQFYJWa3l-paJRg

提取码:6x77


尚硅谷大数据技术之 Beam

链接:https://pan.baidu.com/s/1S4L6HGF_aFWPMPy7b9ZBWg

提取码:riak


尚硅谷大数据技术之 Doris

链接:https://pan.baidu.com/s/1gauWLJp6mKdhJ0UGL1X3sw

提取码:gh3z


尚硅谷大数据技术之电商数仓 5.0

链接:https://pan.baidu.com/s/1weL2gnCZ63S3FIFFEC2VVg

提取码:kw26


尚硅谷大数据项目之 Flink 实时数仓 2.0

链接:https://pan.baidu.com/s/1mK2GNXmIxXRH5VGZsRCmhQ

提取码:4tdu


尚硅谷大数据技术之 Flink 内核源码

链接:https://pan.baidu.com/s/1JOESaT93otfn08_djfmIlQ

提取码:8360


尚硅谷大数据技术之 Canal

链接:https://pan.baidu.com/s/1aW_6Ka5C_6YIMqf_CNRgaw

提取码:t6v9


尚硅谷大数据技术之Hadoop3.x

链接:https://pan.baidu.com/s/1ECTC1ZqN7EdRs8Ub4rdaEw

提取码:9ix2


尚硅谷大数据技术之Prometheus+grafana+睿象云

链接:https://pan.baidu.com/s/1Lep0nPcV9OjkqcSrdxTCnQ

提取码:bz2f


尚硅谷大数据技术之Flink CDC

链接:https://pan.baidu.com/s/1K7MlWUlF-3KEQzoll0eesQ

提取码:lhjv


硅谷大数据之Airflow(3.0)

链接:https://pan.baidu.com/s/11HRL5sFk6vDqfNFqyCcpag

提取码:kfq7


尚硅谷大数据技术之Zookeeper

链接:https://pan.baidu.com/s/118-wNwlMovYZtvJ3XBpmFw

提取码:7rib


尚硅谷大数据技术之Hive源码及优化

链接:https://pan.baidu.com/s/18Z2Cy3AsSXTZQlFDnhp1EA

提取码:8unc


尚硅谷大数据之DolphinScheduler

链接:https://pan.baidu.com/s/15e7CovqkscBxe2m7n_2WzA

提取码:wh01


尚硅谷大数据技术之新版数据湖Hudi

链接:https://pan.baidu.com/s/1seZVFQk_DK-Ln_MnEvjJSA

提取码:kjtm


尚硅谷大数据技术之ClickHouse

链接:https://pan.baidu.com/s/1iGdLEBuY1uGyHFU0Lw1Hyw

提取码:z5xh


尚硅谷大数据技术之Debezium

链接:https://pan.baidu.com/s/1ndrLwa_5au2fxJinm6YBSA

提取码:yyds


尚硅谷大数据项目之Flink实时数仓3.0(抢先版)

链接:https://pan.baidu.com/s/1gpkl3AAI5FMbIhzA-_U-UA?pwd=yyds

提取码:yyds

]]>
Fri, 02 Feb 2024 12:42:54 +0800 /blog.php?id=2743
Openeuler2203安装zookeeper-3.9.1与kafka-3.6.1集群 admin /blog.php?id=2742 Openeuler2203系统zookeeper+kafka集群部署

一,具体环境

1,云主机

前三台用来安装zookeeper-3.9.1与kafka_2.13-3.6.1,Java 采用JAVA-11-openjdk版本

192.168.0.11 ecs-0001

192.168.0.12 ecs-0002

192.168.0.13 ecs-0003

192.168.0.14 ecs-0004

注意: kafka新版本可以使用kraft配置文件,不再需要zookeeper。

2,目录信息

/data/kafka 用来存放kafka文件

/data/zookeeper 用来存放zookeeper文件

/data/bin 用来存放启动脚本



二,部署步骤

1,主机环境配置

# 主机免密 
ssh-keygen

for i in {11..14};do ssh-copy-id 192.168.0.${i};done

# 安装java-11

for i in {11..14};do ssh 192.168.0.${i} "yum install -y java-11";done

#配置hosts

for i in {1..4};do ssh 192.168.0.1${i} "sed -i '3d' /etc/hosts";done

for i in {1..4};do ssh 192.168.0.1${i} "echo "192.168.0.11  ecs-0001" >> /etc/hosts";done
for i in {1..4};do ssh 192.168.0.1${i} "echo "192.168.0.12  ecs-0002" >> /etc/hosts";done
for i in {1..4};do ssh 192.168.0.1${i} "echo "192.168.0.13  ecs-0003" >> /etc/hosts";done
for i in {1..4};do ssh 192.168.0.1${i} "echo "192.168.0.14  ecs-0004" >> /etc/hosts";done

 
 

  2,zookeeper集群安装

安装步骤

# 创建目录与下载
for i in {1..4};do ssh 192.168.0.1${i} "mkdir -p /data/";done

cd /data/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz

# 解压文件
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /data/
tar -zxvf kafka_2.13-3.6.1.tgz -C /data/
mv apache-zookeeper-3.9.1-bin zookeeper
mv kafka_2.13-3.6.1 kafka

#根据后面的内容将ecs-0001主机的zookkeeper/config/zoocfg配置文件内容修改下

#然后打包zookeeper目录

cd /data/
zip -r zookeeper.zip zookeeper

# 将打包文件传到其它主机上并解压
for i in {2..3};do scp /data/zookeeper.zip  192.168.0.1${i}:/data/;done

for i in {11..13};do ssh 192.168.0.${i} "cd /data && unzip zookeeper.zip";done
 
# 修改zookeeper的id  
for i in {1..3};do ssh 192.168.0.1${i} " echo ${i} >  /data/zookeeper/zkdata/myid";done


以下内容是zoo.cfg配置



dataDir=/data/zookeeper/zkdata
dataLogDir=/data/zookeeper/logs

server.1=ecs-0001:3188:3288
server.2=ecs-0002:3188:3288
server.3=ecs-0003:3188:3288


以下内容是批量启动zookeeper的脚本,放到 /data/bin/zookeeper.sh中



#!/bin/bash
ZK_HOME=/data/zookeeper
case $1 in
"start") {
   for i in ecs-0001 ecs-0002 ecs-0003; do
       echo ---------- zookeeper $i 启动 ------------
       ssh $i "/data/zookeeper/bin/zkServer.sh start"
   done
} ;;
"stop") {
   for i in ecs-0001 ecs-0002 ecs-0003; do
       echo ---------- zookeeper $i 停止 ------------
       ssh $i "/data/zookeeper/bin/zkServer.sh stop"
   done
} ;;
"status") {
   for i in ecs-0001 ecs-0002 ecs-0003; do
       echo ---------- zookeeper $i 状态 ------------
       ssh $i "/data/zookeeper/bin/zkServer.sh status"
   done
} ;;
esac


3,启动zookeeper

#启动zookeeper服务

[root@ecs-0001 bin]# ./zookeeper.sh start
---------- zookeeper ecs-0001 启动 ------------

Authorized users only. All activities may be monitored and reported.
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------- zookeeper ecs-0002 启动 ------------

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
---------- zookeeper ecs-0003 启动 ------------


/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED



#检测zookeeper服务状态,可以看到ecs-0002已经是Leader

[root@ecs-0001 bin]# ./zookeeper.sh status
---------- zookeeper ecs-0001 状态 ------------

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
---------- zookeeper ecs-0002 状态 ------------

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
---------- zookeeper ecs-0003 状态 ------------

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower



4,kafka安装步骤

安装流程

#根据后面的内容将ecs-0001主机的kafka/config/kraft/server.properties配置文件内容修改下

#然后打包kafka目录

cd /data/
zip -r kafka.zip kafka

# 将打包文件传到其它主机上并解压
for i in {2..3};do scp /data/kafka.zip  192.168.0.1${i}:/data/;done

for i in {12..13};do ssh 192.168.0.${i} "cd /data && unzip kafka.zip";done

# 注意另外两台主机都要修改配置文件


kafka配置文件修改内容,每台主机都要修改

 
node.id=1
controller.quorum.voters=1@ecs-0001:9093,2@ecs-0002:9093,3@ecs-0003:9093
listeners=PLAINTEXT://ecs-0001:9092,CONTROLLER://ecs-0001:9093  
advertised.listeners=PLAINTEXT://ecs-0001:9092  
log.dirs=/data/kafka/logs
num.partitions=10


kafka集群初始化

[root@ecs-0001 bin]# /data/kafka/bin/kafka-storage.sh random-uuid


xJevzljvR76d1nnM8IANMQ


[root@ecs-0001 bin]#
for i in {1..3};do ssh 192.168.0.1${i} "/data/kafka/bin/kafka-storage.sh format -t xJevzljvR76d1nnM8IANMQ -c /data/kafka/config/kraft/server.properties";done


Formatting /data/kafka/logs with metadata.version 3.6-IV2.

Formatting /data/kafka/logs with metadata.version 3.6-IV2.

Formatting /data/kafka/logs with metadata.version 3.6-IV2.


[root@ecs-0001 bin]# cat /data/kafka/logs/meta.properties
#
#Wed Jan 31 14:55:41 CST 2024
node.id=1
version=1
cluster.id=xJevzljvR76d1nnM8IANMQ


以下内容是批量启动kafka的脚本,放到 /data/bin/kafka.sh中

#!/bin/bash

#KAFKA_HOME
export KAFKA_HOME=/data/kafka/
export PATH=$PATH:$KAFKA_HOME/bin

case $1 in
"start") {
   for i in ecs-0001 ecs-0002 ecs-0003; do
       echo ---------- kafka $i 启动 ------------
       ssh $i "export KAFKA_HOME=/data/kafka/ && export PATH=$PATH:$KAFKA_HOME/bin && /data/kafka/bin/kafka-server-start.sh /data/kafka/config/server.properties"
   done
} ;;
"stop") {
   for i in ecs-0001 ecs-0002 ecs-0003; do
       echo ---------- kafka $i 停止 ------------
       ssh $i "export KAFKA_HOME=/data/kafka/ && export PATH=$PATH:$KAFKA_HOME/bin && /data/kafka/bin/kafka-server-stop.sh stop"
   done
} ;;
esac


5,kafka功能测试

# 创建topic测试:

[root@kafka10]# ./bin/kafka-topics.sh --create --bootstrap-server ecs-0001:9092 --replication-factor 1 --partitions 1 --topic tp1

Created topic tp1.

# 查看所有的topic

[root@kafka1]# ./bin/kafka-topics.sh --list  --bootstrap-server ecs-0003:9092
tp1

# 模拟一个数据

[root@kafka1]# ./bin/kafka-console-producer.sh --bootstrap-server ecs-0001:9092 --topic tp1
>测试数据
>ceshi1

# 起一个消费者:

[root@kafka1]# ./bin/kafka-console-consumer.sh --bootstrap-server ecs-0002:9092 --topic tp1

测试数据
ceshi1


# 到这里kafka集群已经ok
————————————————
]]>
Wed, 31 Jan 2024 16:08:40 +0800 /blog.php?id=2742
Docker 或k8s部署 NACOS开启登录 admin /blog.php?id=2741 Docker 或k8s部署 NACOS开启登录

一,修改 Nacos 主目录 config/application.properties 文件

 

(1)启动登录认证功能 原本是 false 修改为 true。

 

### If turn on auth system:
nacos.core.auth.enabled=``true

 

(2)客户端和服务端交互时用于加密的密钥,可以防止认证过程中的信息泄露。

 

### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=yourKey 
nacos.core.auth.server.identity.value=yourKey

 

 

注意:yourKey 就是秘钥,根据自己需求填写。

(3)设置 Token 认证的密钥

 

### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

 

注意:这里设置的秘钥长度必须大于等于 32 字节,并且使用 Base64 加密,例如:VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg= 实际字符串为 ThisIsMyCustomSecretKey012345678

(4)重启 Nacos 服务。

 

二,以下是docker 与k8s运行nacos时的参数

 

Common property configuration

namedescriptionoption
MODEcluster/standalonecluster/standalone default cluster
NACOS_SERVERSnacos cluster addresseg. ip1:port1 ip2:port2 ip3:port3
PREFER_HOST_MODEWhether hostname are supportedhostname/ip default ip
NACOS_APPLICATION_PORTnacos server portdefault 8848
NACOS_SERVER_IPcustom nacos server ip when network was mutil-network 
SPRING_DATASOURCE_PLATFORMstandalone support mysqlmysql / empty default empty
MYSQL_SERVICE_HOSTmysql host 
MYSQL_SERVICE_PORTmysql database portdefault : 3306
MYSQL_SERVICE_DB_NAMEmysql database name 
MYSQL_SERVICE_USERusername of database 
MYSQL_SERVICE_PASSWORDpassword of database 
MYSQL_DATABASE_NUMIt indicates the number of databasedefault :1
MYSQL_SERVICE_DB_PARAMDatabase url parameterdefault : characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
JVM_XMS-Xmsdefault :1g
JVM_XMX-Xmxdefault :1g
JVM_XMN-Xmndefault :512m
JVM_MS-XX:MetaspaceSizedefault :128m
JVM_MMS-XX:MaxMetaspaceSizedefault :320m
NACOS_DEBUGenable remote debugy/n default :n
TOMCAT_ACCESSLOG_ENABLEDserver.tomcat.accesslog.enableddefault :false
NACOS_AUTH_SYSTEM_TYPEThe auth system to use, currently only 'nacos' is supporteddefault :nacos
NACOS_AUTH_ENABLEIf turn on auth systemdefault :false
NACOS_AUTH_TOKEN_EXPIRE_SECONDSThe token expiration in secondsdefault :18000
NACOS_AUTH_TOKENThe default tokendefault :SecretKey012345678901234567890123456789012345678901234567890123456789
NACOS_AUTH_CACHE_ENABLETurn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.default : false
MEMBER_LISTSet the cluster list with a configuration file or command-line argumenteg:192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
EMBEDDED_STORAGEUse embedded storage in cluster mode without mysqlembedded default : none
NACOS_AUTH_CACHE_ENABLEnacos.core.auth.caching.enableddefault : false
NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLEnacos.core.auth.enable.userAgentAuthWhitedefault : false
NACOS_AUTH_IDENTITY_KEYnacos.core.auth.server.identity.keydefault : serverIdentity
NACOS_AUTH_IDENTITY_VALUEnacos.core.auth.server.identity.valuedefault : security
NACOS_SECURITY_IGNORE_URLSnacos.security.ignore.urlsdefault : /,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

]]>
Wed, 17 Jan 2024 15:35:43 +0800 /blog.php?id=2741
kubesphere3.4.1修改ks-devops-agent的maven配置 admin /blog.php?id=2740 kubesphere3.4.1修改ks-devops-agent的maven配置

Maven仓库介绍

当使用 Maven 构建项目时,有三种仓库起着重要作用:

  1. 本地仓库:就像你自己的书库。当你使用 Maven 下载依赖项时,它们会被保存在你电脑上的一个特定目录中,以后可以重复使用。这个本地仓库存储了项目所需的库文件和插件,使得构建过程更快速,因为不需要每次都从互联网下载。
  2. 中央仓库:类似于一个全球共享的图书馆。中央仓库是 Maven 社区维护的一个公共存储库,其中包含了大量的开源库文件和插件。当你在 Maven 项目中声明依赖项时,如果没有指定其他远程仓库,Maven 会自动从中央仓库下载所需的依赖项。中央仓库是 Maven 默认的远程仓库,你可以从中央仓库获取到大量常见的开源库文件和插件。
  3. 远程仓库:类似于其他人的书库。远程仓库是其他人或组织维护的存储库,可以用来存储和分享自定义的库文件和插件。当你在项目中需要特定的依赖项或插件,而这些不在中央仓库中,你可以配置远程仓库的位置,以便 Maven 可以从远程仓库中下载所需的文件。

Maven配置本地仓库

1、在maven安装目录下新建文件夹 repository 作为本地仓库。

2、找到conf下的settings.xml文件进行配置

<localRepository>D:\Program Files\maven\localRepository</localRepository>


Maven 添加华为云仓库

1,找到conf下的settings.xml文件添加以下配置配置

<mirror>
    <id>huaweicloud</id>
    <mirrorOf>*</mirrorOf>
    <url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>


kubesphere3.4.1修改ks-devops-agent的maven配置

找到 配置字典,ks-devops-agent ,修改设置,以下附件内容填写

点击打开链接


]]>
Tue, 16 Jan 2024 16:35:18 +0800 /blog.php?id=2740
kubesphere Jenkins agent pod配置修改 admin /blog.php?id=2739 kubesphere Jenkins agent pod配置修改


kubesphere的流水线使用的Pod模板配置内存比较大,可以通过修改ConfigMap内容来修改模板资源限制

Jenkins 强大而灵活,已经成为 CI/CD 工作流的事实标准。但是,许多插件要求用户先设置系统级配置,然后才能使用。

KubeSphere DevOps 系统提供基于 Jenkins 的容器化 CI/CD 功能。为了向用户提供可调度的 Jenkins 环境,KubeSphere 使用 Configuration as Code 进行 Jenkins 系统设置,这要求用户登录 Jenkins 仪表板并在修改配置后重新加载。Jenkins 系统设置在 KubeSphere 当前版本的控制台上不可用,即将发布的版本将支持该设置。

本教程演示如何在 Jenkins 仪表板上设置 Jenkins 并重新加载配置。

Jenkins Configuration as Code

KubeSphere 默认安装 Jenkins Configuration as Code 插件,您可以通过 YAML 文件定义 Jenkins 的期望状态,便于再现 Jenkins 的配置(包括插件配置)。您可以在该目录中查看具体的 Jenkins 配置和示例 YAML 文件。

此外,您可以在 ks-jenkins 仓库中找到 formula.yaml 文件,查看插件版本并按需自定义这些版本。


修改 ConfigMap

建议您通过 Configuration as Code (CasC) 在 KubeSphere 中配置 Jenkins。内置 Jenkins CasC 文件存储为 ConfigMap

  1. 以 admin 身份登录 KubeSphere,点击左上角的平台管理,然后选择集群管理

  2. 如果您已经启用多集群功能并已导入成员集群,您可以选择一个特定集群来编辑 ConfigMap。如果您尚未启用多集群功能,请直接参考下一步。

  3. 在左侧导航栏中选择配置下的配置字典。在配置字典页面上,从下拉列表中选择 kubesphere-devops-system,然后点击 jenkins-casc-config

  4. 在详情页面上,点击更多操作,在下拉列表中选择编辑 YAML

  5. jenkins-casc-config 的配置模板是一个 YAML 文件,位于 data.jenkins_user.yaml: 部分。您可以在 ConfigMap 的代理 (Kubernetes Jenkins Agent) 中修改容器镜像、标签、资源请求 (Request) 和限制 (Limit) 等内容,或者在 podTemplate 中添加容器。完成操作后,点击确定

  6. 请至少等待 70 秒,您的改动会自动重新加载。

  7. 有关如何通过 CasC 设置 Jenkins 的更多信息,请参见 Jenkins 文档


]]>
Tue, 09 Jan 2024 16:40:42 +0800 /blog.php?id=2739
openeuler 2203 Linux 网卡名称,IP,MAC地址漂移解决方法 admin /blog.php?id=2738 openeuler  2203 Linux 网卡名称,IP,MAC地址漂移解决方法

一,具体情况,

 主机有4个网卡,全部使用中,发现其中一个网卡enp6s0网络不通,查看网卡信息名称变成了 rename3,

即便使用图形界面,也没法启动网卡enp6s0。

如下信息

[root@CE010101000001 ~]# ip addr show 

2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether cc:82:7f:35:12:67 brd ff:ff:ff:ff:ff:ff
    altname enp4s0
    inet 192.168.2.101/24 brd 192.168.2.255 scope global noprefixroute enp5s0
       valid_lft forever preferred_lft forever
3: rename3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether cc:82:7f:35:12:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.7.200/24 brd 192.168.7.255 scope global noprefixroute rename3
       valid_lft forever preferred_lft forever
4: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether cc:82:7f:35:12:69 brd ff:ff:ff:ff:ff:ff
    altname enp6s0
    inet 192.168.0.101/24 brd 192.168.0.255 scope global noprefixroute enp7s0
       valid_lft forever preferred_lft forever
5: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether cc:82:7f:35:12:66 brd ff:ff:ff:ff:ff:ff
    altname enp0s31f6
    inet 10.156.87.101/24 brd 10.156.87.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
 

二,解决方法。

1,添加MAC地址绑定名称文件,重启系统,即可。


[root@CE010101000001 ~]# cat /etc/udev/rules.d/70-persistent-net.rules


SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="cc:82:7f:35:12:66",NAME="eno1"
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="cc:82:7f:35:12:67",NAME="enp5s0"
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="cc:82:7f:35:12:68",NAME="enp6s0"
SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="cc:82:7f:35:12:69",NAME="enp7s0"


三,临时解决方法,无需重启系统

1,因为主机一直使用中,无法重启系统 ,只有想办法先联上网。

2,查看ifcfg-enp6s0网卡配置文件

[root@CE010101000001 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp6s0 
# Generated by parse-kickstart
TYPE=Ethernet
DEVICE=enp6s0
#UUID=5c17e691-9b62-4098-a4e6-b941df037f0c
ONBOOT=yes
IPV6INIT=no
PROXY_METHOD=none
BROWSER_ONLY=no
IPV6_DISABLED=yes
NAME=enp6s0
HWADDR=CC:82:7F:35:12:68
BOOTPROTO=none
IPADDR=192.168.7.200
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no

3,发现uuid已经注释,不可能是uuid变了导致的,HWADDR的MAC地址也绑定了,MAC地址也没变,
看不出来什么问题,不清楚网卡名称怎么会变。

4,检查网卡的托管状态。

[root@CE010101000001 ~]# nmcli connection show

NAME             UUID                                  TYPE      DEVICE          
eno1             abf4c85b-57cc-4484-4fa9-b4a71689c359  ethernet  eno1                   
enp6s0           b43fa2aa-5a85-7b0a-9a20-469067dba6d6  ethernet  --              

5,发现enp6s0 没有对应的DEVICE硬件网卡信息     


6,断开rename4连接 ,可以发现只有rename3, 没有enp6s0

[root@CE010101000001 ~]# nmcli device disconnect 
br-38d02ba0def8  docker0          enp5s0           help             rename3          veth65d9e04      vethebde10b

br-5d572960399a  eno1             enp7s0           lo               veth0d40262      vetha0077d5 


[root@CE010101000001 ~]# nmcli device disconnect rename3
错误:断开设备 "rename3" (/org/freedesktop/NetworkManager/Devices/5) 的连接失败:This device is not active
错误:未断开所有设备的连接。


7,修改enp6s0配置文件,注释DEVICE绑定信息

[root@CE010101000001 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp6s0 
# Generated by parse-kickstart
TYPE=Ethernet
#DEVICE=enp6s0
#UUID=5c17e691-9b62-4098-a4e6-b941df037f0c
ONBOOT=yes
IPV6INIT=no
PROXY_METHOD=none
BROWSER_ONLY=no
IPV6_DISABLED=yes
NAME=enp6s0
HWADDR=CC:82:7F:35:12:68
BOOTPROTO=none
IPADDR=192.168.7.200
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no


8,启动网卡enp6s0


[root@CE010101000001 ~]# ifup enp6s0 

连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)


9,查看网卡托管状态与ip 信息正常,恢复通网。

[root@CE010101000001 ~]# nmcli connection show 
NAME             UUID                                  TYPE      DEVICE          
eno1             abf4c85b-57cc-4484-4fa9-b4a71689c359  ethernet  eno1                 
enp6s0           b43fa2aa-5a85-7b0a-9a20-469067dba6d6  ethernet  rename3         

[root@CE010101000001 ~]# ifconfig rename3
rename3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.7.200  netmask 255.255.255.0  broadcast 192.168.7.255
        ether cc:82:7f:35:12:68  txqueuelen 1000  (Ethernet)
        RX packets 508  bytes 65546 (64.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 579  bytes 74511 (72.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xb1200000-b127ffff  



]]>
Wed, 03 Jan 2024 16:34:58 +0800 /blog.php?id=2738
openeuler2203升级openssh9.6p1解决漏洞问题 admin /blog.php?id=2737 openeuler2203升级openssh9.6p1解决漏洞问题

   

    1,使用rpmbuild将tar包打成rpm包,不喜欢编译升级的,使用RPM升级就方便多了。

    想使用openssh的源码包编译安装的,参考这里:

OpenSSH-9.6p1 (linuxfromscratch.org)


2,准备编译环境

    [root@centos7-31 ~]#  yum install rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel  libXt-devel gtk2-devel make perl -y

    [root@centos7-31 ~]#  dnf install imake -y 

    [root@centos7-31 ~]#  mkdir -p /root/rpmbuild/

    [root@centos7-31 ~]#   cd /root/rpmbuild

    [root@centos7-31 ~]#    mkdir BUILD BUILDROOT RPMS SOURCES SPECS SRPMS

3,下载软件包

    [root@centos7-31 ~]#  cd SOURCES/

    [root@centos7-31 ~]#  wget  https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz

    [root@centos7-31 ~]#   wget https://mirrors.slackware.com/slackware/slackware-14.2/source/xap/x11-ssh-askpass/x11-ssh-askpass-1.2.4.1.tar.gz


   4,解压软件包,修改相关配置文件,再重新打包

    [root@centos7-31 ~]#  tar zxvf openssh-9.6p1.tar.gz

    [root@centos7-31 ~]#   cd openssh-9.6p1/

    [root@centos7-31 ~]#   cp /etc/pam.d/sshd contrib/redhat/sshd.pam

    注意这里还需要修改/root/rpmbuild/SOURCES/openssh-9.6p1/sshd_config文件内容,这样升级后就不修改系统的sshd_config的配置内容。

    根据自己情况修改。

    [root@centos7-31 ~]#   cd /root/rpmbuild/SOURCES/

    [root@centos7-31 ~]#    tar -zcpf openssh-9.6p1.tar.gz openssh-9.6p1


   5,修改打包配置文件。

   

    #将openssh.spec配置文件拷贝到,编译目录下

     cp cd /root/rpmbuild/SOURCES/openssh-9.6p1/contrib/redhat/openssh.spec  /root/rpmbuild/SPECS/ 

     cd /root/rpmbuild/SPECS

     

   # 解决PreReq报错

   cat /root/rpmbuild/SPECS/openssh.spec | grep PreReq

   sed -i '/PreReq/s/^/#/' openssh.spec


   以下是打包配置文件,使用此文件可解决没有ssh-copy-id命令的问题

        openssh.spec

    


   6,打包软件

    [root@centos7-31 ~]#   rpmbuild -ba openssh.spec 

    

   7,删除旧版软件,并安装openssh9.4p1

    [root@centos7-31 ~]#   cd /root/rpmbuild/RPMS/x86_64/

[root@centos7-31 ~]#    rpm -Uvh openssh-*.rpm

或是使用以下命令删除旧软件包,再安装。

    [root@centos7-31 ~]#     rpm -e $(rpm -qa |grep openssh) --nodeps

    [root@centos7-31 ~]#   rpm -ivh openssh-*.rpm

    

   8,检查配置文件内容是否有误,启用sshd服务

    [root@centos7-31 ~]#    sshd -t

    [root@centos7-31 ~]#     systemctl disable sshd

    [root@centos7-31 ~]#     systemctl enable sshd

    [root@centos7-31 ~]#    systemctl restart sshd


   以下是openssh9.6p1的rpm包下载地址

          openssh9.6p1.zip



]]>
Thu, 28 Dec 2023 10:57:19 +0800 /blog.php?id=2737
华为云基于ServiceStage的微服务开发与部署的实验过程问题 admin /blog.php?id=2736 华为云基于ServiceStage的微服务开发与部署的实验过程问题

一,无法拉取代码问题


1,在华为云作基于ServiceStage的微服务开发与部署的实验时,会出现git clone不了代码的问题。
2,主要原因是在cce中配置好k8s集群管理端后,再手动添加的3个节点,没法添加公网IP的,导致 git clone代码时,
node节点主机无法连接外网,所以不能正常进行。


解决方法 :  

新建三个EIP,或是NAT资源。然后再绑定到节点主机上,再次到 servicestage 中的持续交付--构建-- 点击 构建任务,即可正常运行。


二,使用新版本的cce集群,构建镜像失败问题


1,旧版cce集群使用的是docker,构建镜像时,需要填写 Dockerfile目录的路径。

2,如cce集群使用的是containerd时,构建镜像时,只能使用cd命令切换了目录,要根据具体情况填写./ 

如果有多个模块需要构建镜像,那么只能每个模块,添加一个构建命令,用来切换目录,但是这个构建功能,有限制 命令功能数量限制,

因此,要么使用docker节点,要么只能每个模块搞一个构建流程。



三,使用serviceStage时构建weathermap项目时,weathermapweb前台包无法使用源码包的问题。

华为云官方项目地址:  使用源码部署天气预报微服务_应用管理与运维平台 ServiceStage_最佳实践_使用ServiceStage托管和治理天气预报微服务应用_华为云 (huaweicloud.com)


git地址:https://github.com/servicestage-demo/weathermap.git


经过本地使用docker测试发现里面的start.sh,shutdown.sh使用的windows格式文件,需要先转换格式,又重写了dockerfile,

修改过的具体地址如下:

               https://gitee.com/micoder/weathermap.git


使用servicestage 持续交付---构建--- 使用源码方式构建 ,具体流程如下:

1,添加 CommonCmd 任务,内容只有切换了 weathermapweb目录。如不切换目录,需要填写: ./weathermapweb/Dockerfile或是填写./weathermapweb/ 都不能正常构建


image.png


2,添加Docker构建任务,由于切换了目录,所以不用填写Dockerfile的相对目录


image.png


3,最后添加归档,上传镜像任务。






]]>
Mon, 25 Dec 2023 13:09:25 +0800 /blog.php?id=2736
如何体验华为云ServiceStage的源码部署功能? admin /blog.php?id=2735 如何体验华为云ServiceStage的源码部署功能?

 


表1所示,ServiceStage基于GitHub提供了一些不同语言的demo。

您可以Fork特定语言的demo源码到自己的GitHub代码仓库中,参考创建并部署组件去体验ServiceStage的源码部署功能。


]]>
Fri, 20 Oct 2023 12:24:01 +0800 /blog.php?id=2735