Kata Containers学习笔记
Kata Containers是基于Intel Clear Container + Hyper runV实现的轻量级的虚拟机,能够无缝的集成到容器生态系统中。Kata和Container一样轻量、快速,同时具有传统虚拟化的安全优势,Kata和Docke…
阅读全文Kubernetes上和DNS相关的问题
这是一篇译文,原文地址:Racy conntrack and DNS lookup timeouts
最近出现了很多关于K8S中DNS查找超时的BUG报告,某些情况下Pod发起的DNS查找耗时高达5s甚至更久。在这篇文章中我将解释DNS查找延迟的根本原因,讨论缓和此延迟的途径,以及如何修改内核解决此问题。
在K8S中,Pod访问D…
阅读全文Ubuntu的时钟同步
这是一个网络协议,用于通过网络来同步系统时钟。
在Ubuntu下,你可以使用timedatectl、timedatectl(从16.04开始,用于代替ntpdate / ntp)执行时钟同步,或者安装chrony以成为NTP服务器。
timesyncd默…
阅读全文Kuberentes客户端编程
1 2 3 4 5 6 7 8 9 |
import ( "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/kubernetes" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/api/errors" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var ( masterURL string kubeConfig string ) func main() { flag.StringVar(&masterURL, "master-url", "", "URL of kubernetes master") flag.StringVar(&kubeConfig, "kube-config", "", "Kubernetes configuration file location") flag.Parse() // 构建配置信息 cfg, err := clientcmd.BuildConfigFromFlags(masterURL, kubeConfig) if err != nil { log.Fatalf("Invalid arguments: %s", err.Error()) } // 创建API集 clientset, err := kubernetes.NewForConfig(cfg) if err != nil { log.Fatalf("Failed to connect to api server: %s", err.Error()) } } |
在Pod中访问API Server,可以使用集群授予的ServiceAccount作为凭证。参考如下代码:
通过标签选择器列出:
可以持续监控目标资源的变化:
下面是修改Deployment环境变量定义的例子:
下面代码片断示意了如何创建一个完整的Deployment对象:
动态客户端的CRU…
阅读全文使用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 | 触发一次系… |
Go语言中的模板引擎
包text/template实现了一个数据驱动的模板引擎,类似的还有html/template包,两者接口一样,但是后者针对HTML进行处理,可以防止某些注入式攻击。
模板的源码是一段UTF-8文本,其中会有一些 {{ }}包围的动作(Action)。模板执行时,动作中的内容 —— pipeline —— 被计算、替换…
阅读全文