团队去年将代码管理迁移到Gitlab后,尝试了CI/CD,用Gitlab-Runner来测试提交的代码是否有问题,用3台机器,kubeadm搭建了一个小的k8s运行环境。上个月25日突然反映runner不能正常运行,后台看了下是证书过期的原因,kubeadm v1.5后好像有证书更新的功能,之前用的好像是v1.2版本,证书更新起来不太方便。现在在做项目,没有时间去整理,还不如重新搭建算了。后来有时间的话,再尝试搭建k8s,the hard way,应该会对kubernetes更深一步的了解。
前段时间CentOS 8发布了,也试了下CentOS 8,但是各方软件兼容还存在一点问题,比如Docker,后来还是以CentOS 7为操作系统。vSphere里新建一台机器,各参数设置好后,再Clone两台,修改IP和hostname就OK,省一些系统安装的时间。
Docker准备
Docker安装比较简单,按官方指引来就OK,因其它原因国内下载Docker Image比较慢,需要一些简单配置,主要参考TUNA和USTC。
1 | wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo |
1 | { |
Kubeadm安装k8s
Kubeadm准备
Kubeadm安装参考官方文档。这次安装的版本是v1.16.2,版本不一样可能涉及到一些Docker Image不一样。可通过kubeadm config images list
查看对应版本需要下载的镜像。
1 | cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
Docker Image准备
因为某些原因无法从外网下载镜像,需要手动处理下,这里要感谢下阿里,提供了一个镜像下载地址。
1 |
|
写好脚本后,直接运行这个脚本,把需要的Image拉下来。
k8s节点
k8s的节点安装参考官方文档。
1 | sudo kubeadm init --kubernetes-version=v1.16.2 --apiserver-advertise-address=10.17.65.250 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16 |
其它节点根据kubeadm init
后的提示直接kubeadm join
就好了。前提也是需要把一些镜像拉下来。
- k8s.gcr.io/pause:3.1
- k8s.gcr.io/kube-proxy:v1.16.2
- quay.io/coreos/flannel:v0.11.0-amd64
Gitlab-Runner Helm安装
安装Helm
参照官方文档,作简要配置。
1 | apiVersion: v1 |
然后运行kubectl create -f rbac-config.yaml
。或者其它方式。主要是RBAC的问题。
1 | kubectl create serviceaccount --namespace kube-system tiller |
Helm配置
Helm也涉及到一些被墙的东西,换下拉取地址。再次感谢阿里? :)
1 | helm repo add gitlab https://charts.gitlab.io/ |
Gitlab Runner安装
Gitlab Runner的文档确实好像不怎么样,好多东西都没写,或者写得不好。
1 | #values.yaml需要根据自己实际情况进行修改,各项都有说明 |
values.yaml
有以下几点需要注意的。
1 | imagePullPolicy: IfNotPresent |
我们Gitlab CI/CD中有个验证就是利用maven编译代码是否可通过,其中需要拉取很多供事的jar包,每次都拉取比较耗时,虽然都从局域网的私服拉。可将.m2的缓存存在node本机,小的k8s就这么做吧。懒得去设置PV,PVC了。以后需要大的k8s,再去整PV吧。NFS啊,MinIO之类的。在helm包文件里修改templates/configmap.yaml
,在start gitlab runner
之前加入以下内容。已经在Gist中加入。
1 | ### ... |
下面是配置文件详情。