解决NodePod模式外网无法访问mysql服务问题

1. 创建NodePod的mysql或MariaDB服务, 请参考Kubernetes Mariadb Mysql安装. 2. 安装完成使用ip:30016 用户 密码连接失败, 使用over ssh方式却可以连接成功. 排查问题 查看防火墙端口打开30016端口 firewall-cmd --list-ports # 没有则添加 firewall-cmd --zone=public --add-port=30016/tcp --permanent firewall-cmd --reload 关闭防火墙, 为啥关闭以后再开一篇解释 systemctl stop firewalld 查询iptables规则, iptables -L -n # iptables 被kubernetes接管后的规则比较多,仔细看下FORWARD规则发现, # policy DROP状态, # 这就导致了我们直接访问node节点的IP加上端口会无法访问容器. # 临时生效 iptables -P FORWARD ACCEPT 永久生效 vim /usr/lib/systemd/system/docker.service # 在[Service]下增加一条规则 ............ ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT # 重启docker生效 systemctl daemon-reload systemctl restart docker 重新使用刚才mysql或mariadb连接测试....

Centos8网络设置

1. 安装Centos8时, 设置网络发现network.service不能使用, 搜索得知服务已更改为nmcli管理, 那就学习下 2. 有2种方式设置静态IP 2.1 方法一. 更改网络配置文件, 重启网络. 更改配置文件 vim /etc/sysconfig/network-scripts/ifcfg-enp0s5 添加内容 BOOTPROTO='static' GATEWAY=192.168.50.1 NETMASK=255.255.255.255 IPADDR=192.168.50.200 PREFIX=32 重启网络, 重点, 相比CentOS 7有变化, CentOS 8已删除network.service. 使用nmcli来管理. # 显示连接 nmcli c show # 生效连接 nmcli connect up enp0s5 可简写为 nmcli c up enp0s5 如SSH连接, 应该会断线, 重新连接需要主机执行下面操作. 删除本机~/.ssh/know_hosts中ip 重启虚拟机 reboot 2.2 方法二, 通过nmcli直接更改网卡信息, 重启网络. 创建一个名字是cc的连接connection, 其中ifname后的enp0s5必须是nmcli d中的device, ipv4.method manual表示静态ip, type ethernet指定以太网. nmcli c add type ethernet con-name cc ifname enp0s5 ipv4....

基本SQL语句用法二

1.创建表 create table if not exists usrinfo( id INT(11), number INT(11), name VARCHAR(255), birthday DATE ); 2.查询表结构 show full columns from usrinfo; desc usrinfo; describe usrinfo; 3.查询创建表的语句 show create table usrinfo; 4.插入数据 插入单选数据 insert into usrinfo values (12123123,“hello”,“1990-02-15”); 插入多行数据 insert into usrinfo values (12123123,“hello”,“1990-02-15”), (12123123,“cc”,“1991-03-01”); 插入某些列 insert into usrinfo(number,name) values (121234123,“eefef”); 插入某些列多行 insert into usrinfo(number,name) values (121234123,“eefef”), (121234123,“eefef”); 5.查询某一列不重复的值 select distinct number from usrinfo; 6.增加新的列 增加新列 alter table usrinfo add id int(11);...

垃圾与垃圾篓

今天准备在厨房里扔干垃圾 厨房里两个垃圾篓 两个干净没有扔过垃圾的篓 思考哪个才是放干垃圾的 忽然想到, 扔到哪个篓, 哪个篓就是干垃圾篓 篓并不重要 是什么垃圾才重要 容器都是一样的, 重要的是你用什么来填满 就像今天, 你用什么填满, 今天就是什么样的...

申请单个域名方式

1. 起因 一级域名和二级域名都使用dns-01验证方式申请证书, 申请一级域名的时候更改了_acme-challenge.actiger.com, 续期的时候发现二级域名申请证书时的配置_acme-challenge.actiger.com验证失败, 续期失败 2. 解决方式, 使用不同方式申请证书, 续期不会有冲突 一级域名Actiger.com使用http文件申请证书 二级通用*.actiger.com用例dns-01的方式申请证书 3. 申请单个域名 certbot certonly --manual --preferred-challenges http --email example@icloud.com --domains actiger.com 提示在actiger.com/.well-known/acme-challenge/ 创建一个文件 假如你设置actiger.com跳转到www.actiger.com, 可以把创建的文件放在www.actiger.com/.well-known/acme-challenge/下 在服务器对应目录创建文件 创建文件成功后, 继续申请证书 申请证书成功后, 存放在/etc/letsencrypt下 ...

Ingress-Ningx配置多个SSL证书

1. 起因 我删除域名服务商对顶级域名(即一级域名)的默认的重定向, 直接指向的我服务地址 使用的通配的二级域名证书 actiger.com, 浏览器弹出安全提示了. 发现, 通配的二级域名证书不能用在actiger.com的证书. 参考这里 3. Ingress Nginx的配置my-nginx.yml apiVersion: extensions/v1beta1 kind: Ingress metadata: namespace: nginx-space name: my-nginx spec: tls: - hosts: - weini.actiger.com - www.actiger.com secretName: ingress-secret - hosts: - actiger.com secretName: ingress-top-secret rules: - host: weini.actiger.com http: paths: - backend: serviceName: my-nginx servicePort: 80 - host: www.actiger.com http: paths: - backend: serviceName: my-nginx servicePort: 80 - host: actiger.com http: paths: - backend: serviceName: my-nginx servicePort: 80 - host: test....

Moco示例

1. Moco是什么? 简单的模拟服务器的程序库/工具, 有请求给出响应.在地址中下载moco-runner-0.12.0-standalone.jar. 2. 使用示例 1. 创建test.json [ { "description": "First test", "request": { "uri": "/demo" }, "response": { "text": "First Response" } } ] 2. 命令行启动服务, moco-runner-0.12.0-standalone.jar与test.json在相同目录下. java -jar ./moco-runner-0.12.0-standalone.jar http -p 8888 -c test.json 3. 验证 访问 http://localhost:8888/demo 2. 模拟一个带参数的请求, para.json [ { "description": "模拟一个有参数的Get请求", "request": { "uri": "/getpara", "method": "get", "queries": { "name": "xiaoming", "age": "20" } }, "response": { "text": "I am on the way....

TestNG生成测试报告

1. 使用的extentreports生成的测试报告, 报告中使用的css文件需要上强(墙) <dependency> <groupId>com.aventstack</groupId> <artifactId>extentreports</artifactId> <version>4.0.9</version> </dependency> 测试方法 package com.actiger.reports; import org.testng.Assert; import org.testng.Reporter; import org.testng.annotations.Test; public class TestReport { @Test public void test1(){ Assert.assertEquals(1,2); } @Test public void test2(){ Assert.assertEquals(1,1); } @Test public void test3(){ Assert.assertEquals(3,3); } @Test public void log1(){ Reporter.log("这是日志"); throw new RuntimeException("这是一个异常"); } } 配置的xml <?xml version="1.0" encoding="UTF-8" ?> <suite name="mytest"> <test name="test"> <classes> <class name="com.actiger.reports.TestReport"> <method> <include name="test1"></include> <include name="test2"></include> <include name="test3"></include> <include name="log1"></include> </method> </class> </classes> </test> <listeners> <listener class-name="com....

TestNG超时测试

TestNG超时测试 超出预期时间则用例失败 package com.actiger.test.timeout; import org.testng.annotations.Test; public class TimeOut { @Test(timeOut = 3000) public void testSuccess() throws InterruptedException{ Thread.sleep(2000); } @Test(timeOut = 2000) public void testFail() throws InterruptedException{ Thread.sleep(3000); } } ...

TestNG多线程配置

1. 在方法注释中配置多线程, 配置线程池 package com.actiger.test.thread; import org.testng.annotations.Test; public class MultiThread { @Test(invocationCount = 10, threadPoolSize = 3) public void test(){ System.out.println("1"); System.out.println("Thread ID:%s%n" + Thread.currentThread().getId()); } } 2. 在xml中配置多线程, 不可配置为线程池. package com.actiger.test.thread; import org.testng.annotations.Test; public class MultiThreadOnXml { @Test public void test1(){ System.out.println("Thread ID: " + Thread.currentThread().getId()); } @Test public void test2(){ System.out.println("Thread ID: " + Thread.currentThread().getId()); } @Test public void test3(){ System.out.println("Thread ID: " + Thread.currentThread().getId()); } } multiThread....