【转载】轻量级Kubernetes之k3s:16:源码编译k3s

轻量级Kubernetes之k3s:16:源码编译k3s
原创liumiaocn 最后发布于2019-12-06 20:53:15 阅读数 63  收藏
展开

这篇文章介绍一下源码编译k3s的方法。

事前准备
go语言环境
go语言版本需要go 1.12,本文示例使用1.13.5[root@liumiaocn ~]# go version
go version go1.13.5 linux/amd64
[root@liumiaocn ~]# ,安装步骤如下所示

步骤1: 下载go语言安装包
执行命令:wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz

步骤2: 设定环境变量
在/etc/profile中设定GOROOT和PATH,详细如下所示

[root@liumiaocn ~]# tail -n2 /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:${GOROOT}/bin
[root@liumiaocn ~]#
1
2
3
4
步骤3:确认版本
重新登录之后即可执行go version确认版本

[root@liumiaocn ~]# go version
go version go1.13.5 linux/amd64
[root@liumiaocn ~]# 
1
2
3
安装gcc
安装命令:yum install gcc

安装libseccomp开发包
CentOS/RHEL下: yum install libseccomp-devel
Ubuntu/Debian下: apt-get install libseccomp-dev

下载k3s源码包
[root@liumiaocn ~]# git clone http://github.com/rancher/k3s.git
Cloning into 'k3s'...
remote: Enumerating objects: 37, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 926826 (delta 10), reused 18 (delta 5), pack-reused 926789
Receiving objects: 100% (926826/926826), 518.39 MiB | 22.51 MiB/s, done.
Resolving deltas: 100% (676821/676821), done.
Checking out files: 100% (12503/12503), done.
[root@liumiaocn ~]#
1
2
3
4
5
6
7
8
9
10
或者使用如下命令下载源码1.0.0的源码压缩包

wget https://github.com/rancher/k3s/archive/v1.0.0.tar.gz

编译k3s
[root@liumiaocn ~]# cd k3s
[root@liumiaocn k3s]# ls 
BUILDING.md                 LICENSE    Vagrantfile  docker-compose.yml  go.sum       main.go    pkg      vendor
Dockerfile.dapper           Makefile   cmd          e2e                 install.sh   manifests  scripts  vendor.go
Dockerfile.sonobuoy.dapper  README.md  contrib      go.mod              k3s.service  package    tests
[root@liumiaocn k3s]# go build -o k3s
go: downloading github.com/sirupsen/logrus v1.4.2
go: downloading github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.16.3-k3s.2
go: downloading github.com/pkg/errors v0.8.1
go: downloading github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.16.3-k3s.2
go: downloading github.com/rootless-containers/rootlesskit v0.6.0
...省略
[root@liumiaocn k3s]# ls
bin          cmd                 Dockerfile.dapper           etc     install.sh   LICENSE   manifests  README.md  Vagrantfile
build        contrib             Dockerfile.sonobuoy.dapper  go.mod  k3s          main.go   package    scripts    vendor
BUILDING.md  docker-compose.yml  e2e                         go.sum  k3s.service  Makefile  pkg        tests      vendor.go
[root@liumiaocn k3s]# ./k3s --version
k3s version dev (HEAD)
[root@liumiaocn k3s]# 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
注:如果希望构建完整版本的二进制文件,直接执行make即可。

常见错误
缺少libseccomp开发库
Package libseccomp was not found in the pkg-config search path.
Perhaps you should add the directory containing `libseccomp.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libseccomp' found
1
2
3
4
CentOS/RHEL下: yum install libseccomp-devel
Ubuntu/Debian下: apt-get install libseccomp-dev

make构建完整版本二进制文件时需要docker启动状态
[root@liumiaocn k3s]# make
./.dapper ci
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
FATA[0005] exit status 1                                
make: *** [ci] Error 1
[root@liumiaocn k3s]# systemctl start docker
[root@liumiaocn k3s]#
1
2
3
4
5
6
7
内存不够
很多显示为signal killed的错误可能都是因为可用内存过少导致的,可考虑增大可用内存再试
/usr/local/go/pkg/tool/linux_amd64/link: signal: killed
1
内存实在不足时,也可以考虑增加swap来应对,只是速度会慢一些,比如使用如下的方式增加1G的swap

[root@liumiaocn ~]# swapon
NAME  TYPE SIZE USED PRIO
/swap file 132M   0B   -1
[root@liumiaocn ~]# 
[root@liumiaocn ~]# dd if=/dev/zero of=/root/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.52969 s, 424 MB/s
[root@liumiaocn ~]# 
[root@liumiaocn ~]# mkswap /root/swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=feb9aea6-2e80-4473-ae58-56c18d49699b
[root@liumiaocn ~]# 
[root@liumiaocn ~]# swapon /root/swapfile
swapon: /root/swapfile: insecure permissions 0644, 0600 suggested.
[root@liumiaocn ~]# 
[root@liumiaocn ~]# vi /etc/fstab
[root@liumiaocn ~]# 
[root@liumiaocn ~]# grep swapfile /etc/fstab
/root/swapfile swap swap defaults 0 0
[root@liumiaocn ~]# 
[root@liumiaocn ~]# swapon
NAME           TYPE  SIZE USED PRIO
/swap          file  132M   0B   -1
/root/swapfile file 1024M   0B   -2
[root@liumiaocn ~]# 
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
参考内容
https://docs.rancher.cn/k3s/building.html#_1-kubernetes-source
————————————————
版权声明:本文为CSDN博主「liumiaocn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liumiaocn/article/details/103415814

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 k3s 上安装 Kubernetes Dashboard,可以按照以下步骤进行操作: 1. 首先,确保已经安装了 k3s。你可以按照 k3s 的官方文档进行安装。 2. 安装 kubectl 命令行工具。你可以使用以下命令来安装 kubectl: ``` curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl ``` 3. 验证 kubectl 是否安装成功: ``` kubectl version --client ``` 4. 创建一个名为 `dashboard.yaml` 的 YAML 文件,将以下内容复制到文件中: ```yaml apiVersion: v1 kind: Namespace metadata: name: kubernetes-dashboard labels: k8s-app: kubernetes-dashboard apiVersion: v1 kind: ServiceAccount metadata: name: kubernetes-dashboard namespace: kubernetes-dashboard apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kubernetes-dashboard apiVersion: apps/v1 kind: Deployment metadata: name: kubernetes-dashboard namespace: kubernetes-dashboard spec: replicas: 1 selector: matchLabels: k8s-app: kubernetes-dashboard template: metadata: labels: k8s-app: kubernetes-dashboard spec: serviceAccountName: kubernetes-dashboard containers: - name: kubernetes-dashboard image: kubernetesui/dashboard:v2.0.3 ports: - containerPort: 8443 protocol: TCP args: - --auto-generate-certificates - --namespace=kubernetes-dashboard - --enable-skip-login ``` 5. 通过以下命令将 YAML 文件应用到 kubernetes 集群中: ``` kubectl apply -f dashboard.yaml ``` 6. 等待一段时间,可以通过以下命令检查 dashboard 是否已经启动: ``` kubectl get pods -n kubernetes-dashboard ``` 7. 如果所有的 pod 状态都是 "Running",则 dashboard 已经成功启动。 8. 创建一个代理访问 dashboard: ``` kubectl proxy ``` 9. 打开浏览器,访问 `http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/`,即可进入 Kubernetes Dashboard。 请注意,将 Dashboard 暴露在公共网络中可能存在安全风险,请谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值