第30节 K8s 开发环境搭建
❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.top
[TOC]
所需要的软件包
- GNU Development Tool (非必须:Linux开发的时候必备工具)
- etcd
- go
- docker(虽然现在只需要 containerd,docker 自带 containerd)
- jq (某些帮助脚本的需要,命令行的json处理器)
- PyYAML (一些测试相关)
- OpenSSL 和 CFSSL
- rsync (文件传输)
安装GNU
sudo apt install build-essential
安装Docker
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
修改ContainerD 所用的镜像库地址
Containerd应用:
containerd的默认配置文件为/etc/containerd/config.toml
,可通过命令:
containerd config default ##查看默认配置
修改信息
containerd config default > ~/config.toml
然后编辑~config.toml
去添加信息:
生成的配置文件:
[stream_processors]
[stream_processors."io.containerd.ocicrypt.decoder.v1.tar"]
accepts = ["application/vnd.oci.image.layer.v1.tar+encrypted"]
args = ["--decryption-keys-path", "/etc/containerd/ocicrypt/keys"]
env = ["OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf"]
path = "ctd-decoder"
returns = "application/vnd.oci.image.layer.v1.tar"
[stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"]
accepts = ["application/vnd.oci.image.layer.v1.tar+gzip+encrypted"]
args = ["--decryption-keys-path", "/etc/containerd/ocicrypt/keys"]
env = ["OCICRYPT_KEYPROVIDER_CONFIG=/etc/containerd/ocicrypt/ocicrypt_keyprovider.conf"]
path = "ctd-decoder"
returns = "application/vnd.oci.image.layer.v1.tar+gzip"
sudo mv ~/config.toml /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl restart containerd.service #重启服务
需要?
默认 contarnerd 配置文件没有生成的,所以 contarnerd 默认把配置文件导入到配置文件中去。
安装rsync:
cd ~/Downloads
wget https://ghproxy.com/https://github.com/WayneD/rsync/archive/refs/tags/v3.2.4.tar.gz
tar -xf v3.2.4.tar.gz
cd rsync-3.2.4
安装一些工具包
sudo apt install -y gcc g++ gawk autoconf automake python3-cmarkgfm
sudo apt install -y acl libacl1-dev
sudo apt install -y attr libattr1-dev
sudo apt install -y libxxhash-dev
sudo apt install -y libzstd-dev
sudo apt install -y liblz4-dev
sudo apt install -y libssl-dev
如果安装失败重试就好
编译,安装:
./configure
make
sudo cp ./rsync /usr/local/bin/
sudo cp ./rsync-ssl /usr/local/bin/
安装jq:
sudo apt-get install jq
安装PyYaml:
sudo apt install -y python3-pip
pip install pyyaml
# 可选 apt install ipython3
安装etcd:
etcd 的安装比较重要,步骤也是比较多一点的~
ETCD_VER=v3.5.4
curl -L https://storage.googleapis.com/etcd/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
mkdir ~/etcd
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C ~/etcd --strip-components=1
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
sudo vim ~/.bashrc
最后加入:export PATH="/home/<用户名>/etcd:${PATH}"
source ~/.bashrc
建议加入自定义环境目录:
source /etc/profile.d/mypath.sh
测试:
root@cubmaster01:~/etcd# etcd --version etcd Version: 3.5.4 Git SHA: 08407ff76 Go Version: go1.16.15 Go OS/Arch: linux/amd64
安装golang (1.24及以上需要golang 1.18):
cd ~/Downloads
wget https://golang.google.cn/dl/go1.19.3.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
mkdir ~/go # 根目录
mkdir ~/go/src # 源文件存放
mkdir ~/go/bin # 我们用go get / go install 安装的可执行文件
sudo vim /etc/profile.d/mypath.sh
最后加入如下几行:
export GOPATH="/home/<用户名>/go"
export GOBIN="/home/<用户名>/go/bin"
export PATH="/usr/local/go/bin:$GOPATH/bin:${PATH}"
source /etc/profile.d
警告
有一些比较深的设置:
sudo vim /etc/sudoers
在secure_path一行加入如下目录:
/usr/local/go/bin (这个是$GOPATH/bin目录)
/home/<用户名>/etcd (这个是etcd命令所在目录)
/home/<用户名>/go/bin (这个是go get安装的程序所在位置)
💡简单的一个案例如下:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin:/root/etcd:/root/go/bin"
设置golang代理:
go env -w GO111MODULE="on"
go env -w GOPROXY="https://goproxy.cn,direct"
安装CFSSL:
go install github.com/cloudflare/cfssl/cmd/...@latest
提示
cfssl 用于 kubernetes 的证书生成的。
下载kubernetes代码:
mkdir $GOPATH/src/k8s.io && cd $GOPATH/src/k8s.io
git clone https://ghproxy.com/https://github.com/kubernetes/kubernetes.git
git checkout -b kube1.24 v1.24.0
为什么需要在 `$GOPATH/src/k8s.io`
kubernetes 历史悠久,所以,最好是选择放入到 $GOPATH/src/k8s.io
最不容易出现错误。
设置git
git remote rm origin # 不建议删除,如果你使用的不是最新版
git remote add origin https://github.com/cubxxw/kubernetes.git
git remote add upstream https://github.com/kubernetes/kubernetes.git
git remote set-url --push upstream no-pushing
git remote -v; git branch -a
Kubernetes Makefile
或许可以直接编译, 事实上 Kubernetes 官方也推荐 Kind 工具。
在 Kubernetes 中的 Github README.md 文档中介绍了:
To start developing K8s
社区存储库包含了所有关于从源代码构建Kubernetes的信息,包括如何贡献代码和文档,联系谁等等。
如果您想立即构建Kubernetes,有两种选择:
你有一个工作的Go语言环境。
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make
您有一个工作的Docker环境。
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make quick-release
For the full story, head over to the developer's documentation.
END 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©