IPVS模式下ClusterIP泄露宿主机端口的问题
在一个启用了IPVS模式kube-proxy的K8S集群中,运行着一个Docker Registry服务。我们尝试通过docker manifest命令(带上--insecure参数)来推送manifest时,出现TLS timeout错误。
这个Registry通过ClusterIP类型的Service暴露访问端点,且仅仅配置了HTTP/80端口。docker manifest命令的--insecure参数的含义是,在Registry不支持HTTPS的情况下,允许使用不安全的HTTP协议通信。…
阅读全文重温iptables
下面这张图描述了一个L3的IP封包如何通过iptables:
对于此图的说明:
- Iptables和内核路由的关系:执行完PREROUTING链之后,会进行路由表的查询
- 通过lo接口的封包,不走PREROUTING的DNAT表
- 出站封包在OUTPUT链之前…
基于BCC进行性能追踪
BCC是一个工具包,用来创建高效的、在内核中运行的性能追踪程序。它首先是一个编译器,能够将你写的代码编译为eBPF程序,此外,它还提供了大量有用的工具和样例
BCC的基础是eBPF,因此其大部分功能需要内核版本在4.1+才能使用,其提供的某些根据甚至需要…
阅读全文使用Sysdig进行系统性能分析
Sysdig是一个开源的系统性能分析工具,可以实现strace、tcpdump、lsof、top、iftop等工具所具有的功能。
如果需要源代码级别的、通用剖析工具,可以参考:利用perf剖析Linux应用程序。
1 2 3 4 5 6 7 8 9 10 |
# CentOS 7 rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo # yum update yum -y install epel-release yum install kernel-devel-$(uname -r) yum install sysdig /usr/lib/dkms/dkms_autoinstaller start sysdig-probe-loader |
-c 运行指定的chisel,如果chisel需要参数,则必须用--chisel=chiselname chiselar…
阅读全文利用perf剖析Linux应用程序
剖析(Profiling)是一种有效的、细粒度的软件性能检查手段,大部分编程语言的生态圈都有各种性能剖析工具。本文的讨论内容与具体编程语言无关,而关注在Linux系统上对应用程序的性能进行剖析。
Linux内核实现了非常有价值的性能分析基础设施(perf…
阅读全文Ubuntu的时钟同步
这是一个网络协议,用于通过网络来同步系统时钟。
在Ubuntu下,你可以使用timedatectl、timedatectl(从16.04开始,用于代替ntpdate / ntp)执行时钟同步,或者安装chrony以成为NTP服务器。
timesyncd默…
阅读全文使用sysrqd进行远程控制
sysrqd是一个简单的守护程序,允许你透过网络发送SysRQ快捷键。某些情况下,远程机器网络可以连通,但是SSH无法登录,可以利用sysrqd强制重启。
1 2 3 |
apt install -y sysrqd echo "password" > /etc/sysrqd.secret service sysrqd restart |
sysrqd默认监听4094端口,在客户机上,使用telnet登录:
1 |
telnet remote-ip 4094 |
根据提示输入密码。然后输入SysRQ快捷键即可。输入q可以退出telnet。
按键 | 说明 |
b | 立即重启,不卸载文件系统、不sync页面缓存 |
c | 触发一次系… |
使用Gitea搭建Git服务器
1 2 3 4 5 6 7 8 |
pushd /opt/gitea mkdir -p custom/conf/ mkdir repos wget -O gitea https://dl.gitea.io/gitea/1.3.2/gitea-1.3.2-linux-amd64 chmod +x gitea nohup /opt/gitea/gitea web > /dev/null 2>&1 & |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
RUN_USER = root RUN_MODE = prod APP_NAME = Gmem Gitea [repository] ROOT = /opt/gitea/repos [server] PROTOCOL = https DOMAIN = git.gmem.cc HTTP_ADDR = 0.0.0.0 HTTP_PORT = 3443 ; 证书需要完整的链 CERT_FILE = /etc/letsencrypt/live/git.gmem.cc/fullchain.pem KEY_FILE = /etc/letsencrypt/live/git.gmem.cc/privkey.pem SSH_DOMAIN = git.gmem.cc ROOT_URL = https://git.gmem.cc/ DISABLE_SSH = false SSH_PORT = 22 LFS_START_SERVER = true LFS_CONTENT_PATH = /opt/gitea/data/lfs LFS_JWT_SECRET = s52JAPPWiOFpp8CZiPHrlGeHWtwv6WCphZtBG5vNLE8 OFFLINE_MODE = false [mailer] ENABLED = false [service] REGISTER_EMAIL_CONFIRM = false ENABLE_NOTIFY_MAIL = false DISABLE_REGISTRATION = true ENABLE_CAPTCHA = false REQUIRE_SIGNIN_VIEW = false DEFAULT_KEEP_EMAIL_PRIVATE = false DEFAULT_ALLOW_CREATE_ORGANIZATION = true DEFAULT_ENABLE_TIMETRACKING = true NO_REPLY_ADDRESS = noreply@gmem.cc [picture] DISABLE_GRAVATAR = false ENABLE_FEDERATED_AVATAR = false [openid] ENABLE_OPENID_SIGNIN = true ENABLE_OPENID_SIGNUP = false [session] PROVIDER = file [log] MODE = file LEVEL = Info ROOT_PATH = /opt/gitea/log |
阅读全文
Ansible学习笔记
Ansible是一个自动化IT工具,能够配置系统、部署软件、编排复杂的IT任务(例如CD、零停机滚动更新)。
Ansible默认通过 SSH 协议管理,在管理机需要Python2.7环境,在托管机上需要Python 2环境。
1 2 3 4 5 6 7 8 |
# 下面的软件包在老版本Ubuntu上叫做python-software-properties sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible # 被管理的主机上需要安装Python2 sudo apt-get install python-minimal |
1 |
/home/alex/Python/3.5.1/bin/pip install ansible |
Ansible支持从多个位置读取配置选项,包括环境变量、命令行参数、名为ansible.cfg的ini文件。
ini文件的搜索顺序为:…
阅读全文