kubectl 远程访问内网中的 kubernetes 集群

拷贝 config

将服务器的 /etc/kubernetes/admin.conf 拷贝至本地的 ~/.kube/config

修改服务器地址

1
2
3
4
5
6
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN
server: https://172.17.43.150:6443
name: kubernetes

server 改成你的远程地址

重新生成证书

保存kubeadm 配置

1
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml

增加可信地址

1
2
3
4
5
6
7
8
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}

Read More

Debug Linux

Virtualbox

装载 Additions

1
2
3
4
5
6
7
sudo mount /dev/cdrom /media/ -o loop

cd /media

sudo ./VBoxLinuxAdditions.run

reboot

载入

1
2
sudo modprobe -a vboxguest vboxsf vboxvideo
sudo mount -t vboxsf <NAME> /mnt/shared/

Build debug kenrel

1
2
cp /boot/
make oldconfig

build

1
make

为 QEMU 配置网桥上网

工具安装

1
2
apt-get install bridge-utils        # 虚拟网桥工具
apt-get install uml-utilities # UML(User-mode linux)工具

配置网桥

1
2
3
4
5
6
7
8
9
10
11
ifconfig <你的网卡名称(能上网的那张)> down    # 首先关闭宿主机网卡接口
brctl addbr br0 # 添加一座名为 br0 的网桥
brctl addif br0 <你的网卡名称> # 在 br0 中添加一个接口
brctl stp br0 off # 如果只有一个网桥,则关闭生成树协议
brctl setfd br0 1 # 设置 br0 的转发延迟
brctl sethello br0 1 # 设置 br0 的 hello 时间
ifconfig br0 0.0.0.0 promisc up # 启用 br0 接口
ifconfig <你的网卡名称> 0.0.0.0 promisc up # 启用网卡接口
dhclient br0 # 从 dhcp 服务器获得 br0 的 IP 地址
brctl show br0 # 查看虚拟网桥列表
brctl showstp br0 # 查看 br0 的各接口信息

创建 TAP

1
2
3
4
tunctl -t tap0 -u <YOUR_ACCOUNT>              # 创建一个 tap0 接口,只允许 XXX 用户访问
brctl addif br0 tap0 # 在虚拟网桥中增加一个 tap0 接口
ifconfig tap0 0.0.0.0 promisc up # 启用 tap0 接口
brctl showstp br0 # 显示 br0 的各个接口

启动参数

1
2
3
sudo qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic 

-net nic -net tap,ifname=tap0,script=no,downscript=no

-net nic 表示希望 QEMU 在虚拟机中创建一张虚拟网卡,-net tap 表示连接类型为 TAP,并且指定了网卡接口名称(就是刚才创建的 tap0,相当于把虚拟机接入网桥)。

Read More

Linux Device Driver 笔记

Prepare

先下载 Linux 源码,然后准备到开发驱动的必须前置工作

1
2
3
make oldconfig
make prepare
make modules_prepare

编译 Helloworld

1
2
3
git clone https://github.com/vigith/Linux-Device-Drivers.git

make -C /root/linux-2.6.32.4/ M=`pwd` modules

-C: 指定 Linux 源码位置

Clion中管理Makefile项目

Tut

安装 PIP

1
sudo apt install python-pip

install compiledb

1
pip install compiledb

compile db

1
compiledb -n make

install plugin for clion

skip

open project

CLion will detect the compile_commands.json file and look in there for its project information. You may see it think about it for a few seconds, then show the “Compiler Info” tab on the Build tool window, telling you that everything finished ok (there were any errors or warnings you’ll see them in the “Sync” tab).

Read More

构建与调试 Linux 内核

本文以读者的 Linux 4.19 为构建目标

构建Linux内核

安装 GCC

1
sudo apt install gcc

构建配置

1
2
3
4
make menuconfig
# 选择 kernel hacking —> [*] compile the kernel with debug info 让其携带调试信息
make defconfig 生成配置文件
make 编译kernel

准备运行环境

因为我们只有一个 Kerenl,我们还需要可以运行的 rootfs 等,最简单的方式是基于已经成熟的 Linux 发行版进行替换内核的方式进行运行。

准备 Ubuntu 镜像

Virtualbox 中安装 ubuntu server 14.04

Read More