在arm64机器上快速搭建openvpn

由于测试需要直接通过内网上华为云测试, 需要搭建vpn进行访问, 在arm64机器上搭建方法如下: 下载openvpn aarch64架构的rpm包:

yum安装时会报pkcs11找不着, 所以下载此包:

安装:

下载一键配置脚本:

在运行脚本之前, 需要先创建目录:

server.conf配置:

  配置防火墙:

  打开内核转发: net.ipv4.ip_forward = 1   也可以配置udp和tcp都监听, 方法如下:

   

KataContainer 实践

Kata container 简介 Kata Container 是两个现有的开源项目合并:Intel Clear Containers和Hyper runV。 Intel Clear Container项目的目标是通过英特尔®虚拟化技术(VT)解决容器内部的安全问题,并且能够将容器作为轻量级虚拟机(VM)启动,提供了一个可选的运行时间,专注于性能(<100ms启动时间),可与Kubernetes 和Docker 等常用容器环境互操作。英特尔®Clear Container表明,安全性和性能不必是一个折衷,将硬件隔离的安全性与容器的性能可以兼得。 hyper runV优先于技术无关支持许多不同的CPU架构和管理程序。 容器安全 使用Docker轻量级的容器时,最大的问题就是会碰到安全性的问题,其中几个不同的容器可以互相的进行攻击,如果把这个内核给攻掉了,其他所有容器都会崩溃。如果使用KVM等虚拟化技术,会完美解决安全性的问题,但响应的性能会受到一定的影响。 单单就Docker来说,安全性可以概括为两点: 不会对主机造成影响 不会对其他容器造成影响 所以安全性问题90%以上可以归结为隔离性问题。而Docker的安全问题本质上就是容器技术的安全性问题,这包括共用内核问题以及Namespace还不够完善的限制: /proc、/sys等未完全隔离 Top, free, iostat等命令展示的信息未隔离 Root用户未隔离 /dev设备未隔离 内核模块未隔离 SELinux、time、syslog等所有现有Namespace之外的信息都未隔离 当然,镜像本身不安全也会导致安全性问题。 kata 隔离技术 我们都知道 Docker 等一类的容器使用 Cgroup 进行资源限制,使用 linux 的 namespace 机制对容器进行隔离,但在实际运行中,仍是由宿主机向容器直接提供网络、存储、计算等资源,虽然性能损失很小,但存在一定的安全问题。 Kata Containers是一个开放源代码社区,致力于通过轻量级虚拟机来构建安全的容器运行时,这些虚拟机的感觉和性能类似于容器,但是使用硬件虚拟化技术作为第二防御层,可以提供更强的工作负载隔离。 kata 底层实现了Intel Clear Containers的最佳部分与Hyper.sh RunV合并,并进行了扩展,以包括对主要架构的支持,包括x86_64之外的AMD64,ARM,IBM Read more…

使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群

前段时间,我们在 ​「使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群」一文中介绍了如何使用 Kind 这个开箱即可快速部署 Kubernetes 高可用集群的神器,相信不少同学用上这个神器后大大的降低了 Kubernetes 集群的部署难度和提高了 Kubernetes 集群的部署速度。不过有一点比较遗憾的是 Kind 当前仅仅支持在本地快速构建一个开发或者测试环境,目前暂时还是不支持在生产环境中部署 Kubernetes 高可用集群的。 今天,我们就要给大家介绍另一款可以支持在生产环境中部署 Kubernetes 高可用集群的利器 Sealos。 什么是 Sealos ? Sealos 是一个 Go 语言开发的简单干净且轻量的 Kubernetes 集群部署工具,Sealos 能很好的支持在生产环境中部署高可用的 Kubernetes 集群。 Sealos 架构图 Sealos 特性与优势 支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。 证书有效期默认延期至 99 年。 工具使用非常简单。 支持使用自定义配置文件,可灵活完成集群环境定制。 使用内核进行本地负载,稳定性极高,故障排查也极其简单。 Sealos 设计原则和工作原理 1. Read more…

kubernetes生产环境下的iptables安全配置

控制节点(主节点)所需要的端口如下: 协议 端口 服务 TCP 6443 k8s API server TCP 2379-2380 etcd server client API TCP 10250 Kubelet API TCP 10251 kube-scheduler TCP 10252 kube-controller-manager TCP 10255 Read-only Kubelet API UDP 8472 flannel TCP 9099,9100 calico TCP 179 bgp TCP 111 rpcbind 使用 NFS 作为持久化存储 IPIP Calico 需要允许 IPIP 协议 Read more…

NetworkPolicy网络策略

资源隔离设计 本案例使用NetworkPolicy来进行资源隔离 要实现的目的: 用户isv应用不能访问k8s集群应用 k8s集群应用可以访问isv应用 isv应用可以访问外网 本案例的架构图:   创建isv-demon namespace

  定义资源 为了不跟宿主机端口冲突, web的service端口定义为8800

    创建WEB, API and DB Pods/Services

  测试:

  定义networkpolicy: deny-all

  定义进栈和出栈访问:

  创建NetworkPolicy

  测试:

  总结: 首先一定要给namespace打label, 因为NetworkPolicy是根据lable来match的 参考: https://alwaysupalwayson.blogspot.com/2019/09/kubernetes-network-policies-how-to.html https://github.com/mathieu-benoit/k8s-netpol 和 https://ahmet.im/blog/kubernetes-network-policy/ https://github.com/ahmetb/kubernetes-network-policy-recipes Read more…

ansible安装mariadb

最近在搞mariadb的高可用安装, 直接使用的官方ansible, 坑太多了, 现在记录下来 官方脚本下载: ansible-galaxy install geerlingguy.mysql 需要修改的地方: roles/tasks/main.yml

  roles/tasks/configure.yml: 如果要自定义一些目录的话, 需要创建目录并修改文件夹权限

roles/tasks/database.yml: 注意修改默认字符集

roles/tasks/variables.yml:

  roles/tasks/secure-installation.yml: 此文件坑较多, 若用官方的, 会出现没有mysql.user库的报错, 因为存在匿名帐户, 直接用mysql -uroot -p登录的话, 会看到没有默认的mysql库, 但是其实已经有库了, 只是登录时如果不写-h的话, 默认就直接解析到通过hostname了, 在my.cnf里添加skip-name-resolve,可以不通过DNS解析.  所以只能通过mysql -hlocalhost -uroot -p方式都能正确地进入到库, 所以更改如下:  [ mysql -NBe 改为: mysql -NB -h localhost -e ] Read more…

iterm2远程连接中文显示乱码

问题: 服务器是ubuntu,用Mac的iterm2 ssh连上去,终端显示中文乱码,也不能输入中文,然而本地终端可以显示和输入。 解决方法: 这种情况一般是终端和服务器的字符集不匹配,MacOSX下默认的是utf8字符集。 输入locale可以查看字符编码设置情况,而我的对应值是空的。 因为我在本地和服务器都用zsh替代了bash,而且使用了oh-my-zsh,而默认的.zshrc没有设置为utf-8编码,所以本地和服务器端都要在.zshrc设置,步骤如下,bash对应.bash_profile或.bashrc文件。 1.在终端下输入

或者使用其他你喜欢的编辑器编辑~/.zshrc文件 2.在文件内容末端添加:

  接着重启一下终端,或者输入source ~/.zshrc使设置生效。 设置成功的话,在本地和登录到服务器输入locale回车会显示下面内容。

  这时,中文输入和显示都正常了。

.vimrc.local配置

 

golang vim环境搭建

主要使用到的是golang的vim插件vim-go, 安装方法: (1)配置好自己的GOPATH和GOROOT; (2)在GOPATH目录下建立 src、pkg、main、bin四个目录; (3)安装插件管理器 Pathogen, (a) 在Pathogen的首页http://www.vim.org/scripts/script.php?script_id=2332 下载; (b) 将解压缩之后的autoload目录拷贝到 ~/.vim/autoload,如果原来没有这个目录的话,新建一个; (c) 编辑 ~/.vimrc 文件,在顶部加入行 call pathogen#infect()。 (4)安装vim-go插件 (a) 进入目录 ~/.vim/bundle 后执行命令 git clone https://github.com/fatih/vim-go.git; (b) 编辑 ~/.vimrc 文件,加入以下内容,如果有有些配置项之前已有,保证配置一样就行;        syntax enable        filetype plugin on        let g:go_disable_autoinstall = 0 (5)安装go tools 这里说的go tools主要是指 godef、goimports、godoc等工具(在/Users/wangjiajia/.vim/bundle/vim-go/plugin/go.vim中有配置) (a) 任意打开一个.go的文件,然后运行 :GoInstallBinaries,就是自动下载工具的二进制包进行安装;但由于 go的代码很多在github 和 golang.org 上, 涉及到墙的问题。自动安装可能会失败。当然,你有 梯子 的话,除外; (b) 手工安装的步骤,进入到GOPATH的src目录下,运行如下命令 git clone https://github.com/golang/tools golang.org/x/tools Read more…

CentOS7 yum 升级vim 8