入坑靠師傅,出坑靠本身!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鏡像存儲系統。
更多的參考: