Do What You Can’t

K8s

Kubernetes 生态越来越成熟,围绕 k8s 做产品或者平台的开发,有时为了快速验证或者做 demo 免不了需要在本地设备上搭建 k8s 集群,而且目前大家使用的设备普遍差不多 8 核 16G 内存的配置,通过 VirtualBox 基本可以创建 1-2 台 2C4G 的虚拟机出来,做为本地临时 k8s 集群也足够了。 今天就总结一下,如何从创建 VirtualBox 虚拟机开始,到通过 kubeadm 搭建本地 k8s 集群,希望对准备上手的同学们有所帮助。 注: 部分步骤需要科学上网,解放社会主义生产力。 VirtualBox 虚拟机创建 下载 CentOS 镜像 这里我们使用 CentOS 7,安装镜像下载地址:https://www.centos.org/download/ 点击 «DVD ISO» 并选择喜欢的镜像下载链接就好。 vm 创建 VirtualBox 通过界面创建 vm 过程非常简单,只需要点击“新建”,填写名称,下一步,设置内存大小,下一步,点击“创建” 即可。 vm 启动前配置 启动虚拟机前,有三个地方需要在“设置”里配置下: 虚拟 CPU 的个数 网络,推荐配置两个网卡,一块 Host-Only 用于组本地局域网,一般情况下 IP 固定;另一块桥接网络(Bridged)或者 NAT,用来连接网络,包括局域网及公网,优先尝试桥接网络,如果发现不能分配到 IP 或者网络功能不正常,停掉配置成 NAT; 加载安装镜像,选择上面下载好的 CentOS 7 ISO 镜像文件

熟悉 docker 及 kubectl 的同学们,很大概率使用过 -it 的交互方式,效果是通过一个可交互的伪终端来实现对目标容器的控制。 今天介绍一下,如何通过 Python 程序实现类似 kubectl exec -it 的 Kubernetes 容器控制程序。 基本原理 在开始控制 Kubernetes 容器之前,我们首先要了解下伪终端或 pty 的基本概念及原理。 pty 定义 The pty module defines operations for handling the pseudo-terminal concept: starting another process and being able to write to and read from its controlling terminal programmatically. 伪终端就是通过 fork 一个新的进程,并能够通过程序控制从原始控制终端中读取或是写入数据。 新进程的写入 stdin 会重定向到原生终端的写入 stdin,新进程的输出 stdout 及 stderr 读取自于原始控制终端的 stdout 及 stderr。 读取和写入部分看起来特别像是管道的概念,但是不同的就是原始进程是一个 termial,除输入和输出外, 还有窗口大小控制、termial mode(raw, cbreak) 还包括 alternative buffer mode(vim 使用的)这些终端独有的特性。