入坑靠师傅,出坑靠本身!node
CI/CD是大规模数据中心不可缺乏的基础设施,也是构建集群化系统的第一步。linux
这里介绍如何从零开始基于Kubernetes创建CI/CD集群,以知足软件企业和数据中心的软件开发和部署的须要。nginx
咱们先创建一个“母机”,安装的软件包括:git
有了上面的八样神器,都配置在“母机上”,基本上能够解决Kubernetes集群部署中的任何问题。github
操做主机是咱们创建集群的原点。docker
须要建立一个启动U盘,而后经过U盘启动计算机,安装Ubuntu操做系统。apache
建立集群的多个个节点的初始系统有几种方法:json
MAAS是Canonical为Ubuntu开发的一个集中化装机系统,能够经过WebUI安装基础操做系统到多个节点上,而后经过cloud-init来初始化系统的配置。下一步,咱们能够经过ansible来控制各个节点。ubuntu
Amsible能够集中地控制多个节点,批量地执行ssh命令。缓存
设置apt的proxy参数:
$ nano /etc/apt/apt.conf Acquire::http::Proxy "http://192.168.199.99:9999"; Acquire::https::Proxy "http://192.168.199.99:9999";
https_proxy=192.168.199.99:9999 wget https://download.docker.com/linux/ubuntu/gpg -O docker.key sudo apt-key add docker.key
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic edge" > /etc/apt/sources.list.d/docker.list sudo apt update sudo apt install docker-ce
cat << EOF > /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] } EOF
sudo systemctl daemon-reload sudo systemctl restart docker
首先,安装Kubeadm、Kubectl、Kubelet基础工具和服务。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6A030B21BA07F4FB
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update sudo apt install kubeadm=1.11.3-00 kubectl=1.11.3-00 kubelet=1.11.3-00
sudo echo "kubeadm hold" | sudo dpkg --set-selections sudo echo "kubectl hold" | sudo dpkg --set-selections sudo echo "kubelet hold" | sudo dpkg --set-selections
而后,就能够安装Kubernetes容器集群管理系统了。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #启用主控机同时做为工做节点 kubectl taint nodes --all node-role.kubernetes.io/master-
A、为了让集群中全部节点均可以访问同一个存储设备,须要配置网络存储,可使用NFS/Ceph/Gluster或其它的存储系统(如SAN/iSCSI等)。对于小型的系统,这里使用NFS。
B、多个节点都须要访问apt安装源来更新系统软件包,将带来较大的并发网络流量并拖慢安装的速度。经过创建局域网络的apt镜像,为网内全部节点提供缓存的apt安装源,所有镜像下来须要1个多T的磁盘空间。我将其作成为一个Kubernetes的按期任务来执行,而后在Kubernetes中建立apt mirror服务,存储使用NFS服务。之后,考虑使用IPFS来创建apt mirror站点,提供更快、全球规模的加速服务。
这里创建一个最小的集合,包括GitLab源码管理系统、Jenkins X持续交付系统、Harbor镜像存储系统。
更多的参考: