本文介紹了如何通過(guò)Kubespray來(lái)進(jìn)行部署高可用k8s集群,k8s版本為1.12.5。
代碼倉(cāng)庫(kù):https://github.com/kubernetes-sigs/kubespray
參考文檔:https://kubespray.io/#/
由于kubespray是依賴(lài)于ansible,ansible通過(guò)ssh協(xié)議進(jìn)行主機(jī)之間的訪(fǎng)問(wèn),所以部署之前需要設(shè)置主機(jī)之間免密登錄,步驟如下:
ssh-keygen?-t?rsa scp?~/.ssh/id_rsa.pub?root@IP:/root/.ssh ssh?root@IP cat?/root/.ssh/id_rsa.pub?>>?/root/.ssh/authorized_keys注意:不要通過(guò)使用github倉(cāng)庫(kù)master分支的代碼,我這里使用的是tag v2.8.3進(jìn)行部署
wget?https://github.com/kubernetes-sigs/kubespray/archive/v2.8.3.tar.gz tar?-xvf?v2.8.3cd?kubespray-v2.8.3Kubernetes安裝大部分都是使用的國(guó)外的鏡像,由于防火墻原因沒(méi)有辦法獲取到這些鏡像,所以需要自己創(chuàng)建鏡像倉(cāng)庫(kù)并將這些鏡像獲取到上傳到鏡像倉(cāng)庫(kù)中。
鏡像倉(cāng)庫(kù)我們選用的組件是Harbor,安裝步驟參考:
https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md
在文件roles/download/defaults/main.yml文件中,可以看到使用的全量鏡像列表,注意某些鏡像由于功能未使用的原因所以暫時(shí)沒(méi)有用到,我們主要用到有如下鏡像:
使用的鏡像列表如下,在這里我申請(qǐng)了一臺(tái)國(guó)外的阿里云主機(jī),在該臺(tái)主機(jī)下載所需鏡像然后上傳至私有鏡像倉(cāng)庫(kù)
例如操作某個(gè)鏡像時(shí),需要執(zhí)行如下命令:
docker?pull?gcr.io/google_containers/kubernetes-dashboard-amd64:v1.10.0 docker?tag?gcr.io/google_containers/kubernetes-dashboard-amd64:v1.10.0?106.14.219.69:5000/google_containers/kubernetes-dashboard-amd64:v1.10.0 docker?push?106.14.219.69:5000/google_containers/kubernetes-dashboard-amd64:v1.10.0在inventory/testcluster/group_vars/k8s-cluster/k8s-cluster.yml文件中添加如下配置:
#?kubernetes?image?repo?define kube_image_repo:?"10.0.0.183:5000/google_containers" ##?modified?by:?robbin #?comment:?將使?的組件的鏡像倉(cāng)庫(kù)修改為私有鏡像倉(cāng)庫(kù)地址 etcd_image_repo:?"10.0.0.183:5000/coreos/etcd" coredns_image_repo:?"10.0.0.183:5000/coredns" calicoctl_image_repo:?"10.0.0.183:5000/calico/ctl" calico_node_image_repo:?"10.0.0.183:5000/calico/node" calico_cni_image_repo:?"10.0.0.183:5000/calico/cni" calico_policy_image_repo:?"10.0.0.183:5000/calico/kube-controllers" hyperkube_image_repo:?"{{?kube_image_repo?}}/hyperkube-{{?image_arch?}}" pod_infra_image_repo:?"{{?kube_image_repo?}}/pause-{{?image_arch?}}" dnsautoscaler_image_repo:?"{{?kube_image_repo?}}/cluster-proportional-autoscaler-{{?image_arch?}}" dashboard_image_repo:?"{{?kube_image_repo?}}/kubernetes-dashboard-{{?image_arch?}}"由于我們的私有鏡像倉(cāng)庫(kù)未配置https證書(shū),需要在 inventory/testcluster/group_vars/all/docker.yml文件中添加如下配置:
docker_insecure_registries: -?10.0.0.183:5000由于默認(rèn)從Docker官方源安裝docker,速度非常慢,這里我們更換為國(guó)內(nèi)阿里源,在inventory/testcluster/group_vars/k8s-cluster/k8s-cluster.yml文件中添加如下配置:?
#?CentOS/RedHat?docker-ce?repo docker_rh_repo_base_url:'? docker_rh_repo_gpgkey:?'? dockerproject_rh_repo_base_url:'? dockerproject_rh_repo_gpgkey:?'https://mirrors.aliyun.com/docker-engine/yum/gpg'3.2.2 可執(zhí)行文件預(yù)處理
另外由于需要從google以及github下載一些可執(zhí)行文件,由于防火墻原因無(wú)法直接在服務(wù)器上下載,我們可以預(yù)先將這些執(zhí)行文件下載好,然后上傳到指定的服務(wù)器路徑中
可執(zhí)行文件下載地址可以在roles/download/defaults/main.yml文件中查找到,下載路徑如下:
kubeadm_download_url:?"https://storage.googleapis.com/kubernetes-release/release/v1.12.5/bin/linux/amd64/kubeadm" hyperkube_download_url:?"https://storage.googleapis.com/kubernetes-release/release/v1.12.5/bin/linux/amd64/hyperkube" cni_download_url:?"https://github.com/containernetworking/plugins/releases/download/v0.6.0/cni-plugins-amd64-v0.6.0.tgz"接下來(lái)修改文件權(quán)限,并上傳到每臺(tái)服務(wù)器的/tmp/releases目錄下
chmod?755?cni-plugins-amd64-v0.6.0.tgz?hyperkube?kubeadm scp?cni-plugins-amd64-v0.6.0.tgz?hyperkube?kubeadm?root@node1:/tmp/releases3.3 組件列表
k8s所需要的組件
可選插件列表
k8s的服務(wù)發(fā)現(xiàn)依賴(lài)于DNS,涉及到兩種類(lèi)型的網(wǎng)絡(luò):主機(jī)網(wǎng)絡(luò)和容器網(wǎng)絡(luò),所以Kubespray提供了兩種配置來(lái)進(jìn)行管理
dns_mode 主要用于集群內(nèi)的域名解析,有如下幾種類(lèi)型,我們的技術(shù)選型是coredns,注意:選擇某種dns_mode,可能需要下載安裝多個(gè)容器鏡像,其鏡像版本也可能不同
resolvconf_mode主要用來(lái)解決當(dāng)容器部署為host網(wǎng)絡(luò)模式的時(shí)候,如何使用k8s的dns,這里我們使用的是docker_dns
resolvconf_mode:?docker_dnskube-proxy可以選擇ipvs或者iptables,在這里我們選擇的是ipvs模式,關(guān)于這兩者的區(qū)別可以參考?華為云在 K8S 大規(guī)模場(chǎng)景下的 Service 性能優(yōu)化實(shí)踐(https://zhuanlan.zhihu.com/p/37230013)
網(wǎng)絡(luò)插件列表如下,我們的技術(shù)選型是calico,注意:選擇某種網(wǎng)絡(luò)插件,可能需要一個(gè)或多個(gè)容器鏡像,其鏡像版本也可能不同。
部署完成,可以登錄到k8s-master所在的主機(jī),執(zhí)行如下命令,可以看到各個(gè)組件正常
kubectl?cluster-info kubectl?get?node kubectl?get?pods?--all-namespaces參考文檔:
https://github.com/kubernetes-sigs/kubespray/blob/master/docs/getting-started.md
https://xdatk.github.io/2018/04/16/kubespray2/
https://jicki.me/kubernetes/docker/2018/12/21/k8s-1.13.1-kubespray/
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
名稱(chēng)欄目:【Kubernetes系列】第3篇Kubernetes集群安裝部署-創(chuàng)新互聯(lián)
文章位置:http://jinyejixie.com/article46/dephhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站排名、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容