Kuernetebs系列一:使用Kubespray部署Kubernetes集群

      網(wǎng)友投稿 692 2025-04-01

      Kubespray是Google開源的一個部署生產(chǎn)級別的Kubernetes服務(wù)器集群的開源項目,它整合了Ansible作為部署的工具。

      項目地址:https://github.com/kubernetes-incubator/kubespray

      部署歷程

      目前為止,對于Kubernetes集群的部署,我只談的上是一個入門者,涉及到了眾多的運維知識,對于一個開發(fā)來說,確實挺難的。萬事開頭難,好事多磨,經(jīng)過一個多星期的反復(fù)嘗試,終于搭建好了。對比市面上的部署方式,主流的有三種方式。一是完全手動部署,非常的繁瑣,容易部署。二是采用kubeAdmin開源項目進(jìn)行部署,這個也是谷歌官方開源的一個項目。三是,采用kubeSpray進(jìn)行部署。我的理念是有好的工具當(dāng)然是用好工具,所以手動部署是不可能的,完全排除,所以Kubeadmin和KubeSpray。而我對Ansibe這個運維組件興趣非常的大,所以我最終選擇了KubeSpray進(jìn)行了部署。

      部署的工程是非常艱難的,在我決定搞Kubernetes之時,為了學(xué)習(xí)不難么枯燥和孤獨,我專門組建了一個群,找了一些朋友一起來學(xué)習(xí)和交流,采用的方式是大家一起學(xué)習(xí),一起寫文檔,一起交流,另外有主機(jī)的出主機(jī)。所以,一開始的主機(jī)是幾個朋友自己的主機(jī),不在一個局域網(wǎng)內(nèi),計算機(jī)操作系統(tǒng)也不太一樣,這為后面的部署帶來了一個大坑。另外由于國內(nèi)的屏蔽了谷歌的網(wǎng)絡(luò),導(dǎo)致谷歌的相關(guān)鏡像下載不下來,這也是一個坑。

      坑點1,不在一個局域網(wǎng)不能部署Kubernetes?我專門打電話問了阿里云,客戶說不可以,是不是真的不可以,我是不確定的。另外集群的型號不同和操作系統(tǒng)不同也會導(dǎo)致失敗。

      坑點2,長城屏蔽了谷歌的鏡像,所以我剛開始是根據(jù)谷歌的鏡像在阿里云鏡像倉庫一頓搜索,導(dǎo)致Kubernetes各個版本組件不兼容,出現(xiàn)了問題。

      現(xiàn)在我也這篇文章來詳細(xì)講解我的部署過程,供其他人參考,如果有其他人想加入我們的Kubernetes興趣群,加我微信miles02和我聯(lián)系。

      主機(jī)相關(guān)

      主機(jī)需要在同一局域網(wǎng)內(nèi)?所以我們重新租了三臺機(jī)器,進(jìn)行了操作。現(xiàn)在列舉主機(jī)相關(guān)的信息如下:

      主機(jī) ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)版本 ???配置 ? ip

      Ansible ? ? ? ? ? ?CentOS 7.2 ? 1核1G ?172.31.84.154

      Mater、Node? ? ?CentOS 7.2 ? 2核2G ?172.31.84.155

      Node ? ? ? ? ? ?CentOS 7.2 ? 2核2G ?172.31.84.156

      Ansible那臺主機(jī)使用KubeSpray進(jìn)行部署,這臺機(jī)器不做Kubernetes相關(guān)集群的部署。另外2臺機(jī)器,一臺既作為Master,又作為Node,另外一臺是一個Node。

      本次部署,使用的KubeSpray版本為v2.1.2。

      Master、Node節(jié)點的操作

      因為本次使用KubeSpray操作部署,所以所有的主機(jī)都需要關(guān)閉防火墻等相關(guān)的操作。

      所以的主機(jī)都需要關(guān)閉selinux,執(zhí)行的命令如下:

      setenforce 0

      sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

      防火墻和網(wǎng)絡(luò)設(shè)置,所有的主機(jī)都執(zhí)行以下命令:

      systemctl stop firewalld

      modprobe br_netfilter

      echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

      sysctl -w net.ipv4.ip_forward=1

      這樣與Kubernetes集群相關(guān)的集群設(shè)置就完畢了。

      Ansibe主機(jī)操作

      Ansibe主機(jī)也需要關(guān)閉selinux和關(guān)閉防火墻以及網(wǎng)絡(luò)設(shè)置,同上面。

      在Ansible主機(jī)上設(shè)置免密碼操作其它主機(jī)

      首先生成ssh公鑰和私鑰。

      ssh-keygen

      按三次回車。

      建立ssh通道,

      ssh-copy-id root@172.31.84.155 將秘鑰分發(fā)給master主機(jī)。

      ssh-copy-id root@172.31.84.156

      安裝Ansible

      安裝ansible和jinja2,安裝命令如下。

      sudo yum install epel-release

      sudo yum install ansible

      easy_install pip

      pip2 install jinja2 --upgrade

      如果執(zhí)行 pip2 install jinja2--upgrade 提示升級,則升級,再執(zhí)行一次命令。

      安裝python36

      sudo yum install python36 -y

      在Ansible集群上安裝KubeSpray

      在ansible機(jī)器上下載KubeSpray代碼,并解壓,執(zhí)行如下的命令:

      wget https://github.com/kubernetes-incubator/kubespray/archive/v2.1.2.tar.gz

      tar -zxvf v2.1.2.tar.gz

      mv kubespray-2.1.2 kuberspray

      安裝KubeSpray所需的包

      執(zhí)行如下命令:

      cd kubespray

      pip install r requirements.txt

      定義集群

      執(zhí)行以下的命令。

      IP=(

      172.31.84.155

      172.31.84.156

      )

      CONFIG_FILE=./kubespray/inventory/inventory.cfg python36 ./kubespray/contrib/inventory_builder/inventory.py ${IP[*]

      vim ~./kubespray/inventory/inventory.cfg

      [all]

      node1? ? ansible_host=172.31.84.156 ip=172.31.84.156

      node2? ? ansible_host=172.31.84.155 ip=172.31.84.155

      [kube-master]

      node1

      [kube-node]

      node1

      node2

      [etcd]

      node1

      [k8s-cluster:children]

      kube-node

      kube-master

      [calico-rr]

      [vault]

      node1

      替換鏡像

      在kuberspay源碼源代碼中搜索包含 gcr.io/google_containers 和 quay.io 鏡像的文件,并替換為我們之前已經(jīng)上傳到阿里云的進(jìn)行,替換腳步如下:

      grc_image_files=(

      ./kubespray/extra_playbooks/roles/dnsmasq/templates/dnsmasq-autoscaler.yml

      ./kubespray/extra_playbooks/roles/download/defaults/main.yml

      ./kubespray/extra_playbooks/roles/kubernetes-apps/ansible/defaults/main.yml

      ./kubespray/roles/download/defaults/main.yml

      ./kubespray/roles/dnsmasq/templates/dnsmasq-autoscaler.yml

      ./kubespray/roles/kubernetes-apps/ansible/defaults/main.yml

      )

      for file in ${grc_image_files[@]} ; do

      sed -i 's/gcr.io\/google_containers/registry.cn-hangzhou.aliyuncs.com\/szss_k8s/g' $file

      done

      quay_image_files=(

      ./kubespray/extra_playbooks/roles/download/defaults/main.yml

      ./kubespray/roles/download/defaults/main.yml

      )

      for file in ${quay_image_files[@]} ; do

      sed -i 's/quay.io\/coreos\//registry.cn-hangzhou.aliyuncs.com\/szss_quay_io\/coreos-/g' $file

      sed -i 's/quay.io\/calico\//registry.cn-hangzhou.aliyuncs.com\/szss_quay_io\/calico-/g' $file

      Kuernetebs系列一:使用Kubespray部署Kubernetes集群

      sed -i 's/quay.io\/l23network\//registry.cn-hangzhou.aliyuncs.com\/szss_quay_io\/l23network-/g' $file

      done

      使用ansible playbook部署Kubernetes集群

      以上全部完成,執(zhí)行安裝操作:

      cd kubespray

      ansible-playbook -i inventory/inventory.cfg cluster.yml -b -v --private-key=~/.ssh/id_rsa

      大約過了10分鐘,如果順利的話,集群會成功搭建。

      驗證幾點是否成功

      登錄Kubernete集群的Mater集群,執(zhí)行如下命令:

      kubectl get no

      控制臺打印出了正確的Kubernetes節(jié)點信息,則安裝成功。

      增加節(jié)點

      cd kubespray

      ansible-playbook -i inventory/inventory.cfg cluster.yml -b -v --private-key=~/.ssh/id_rsa --limit node3

      遇到問題卸載

      ansible執(zhí)行卸載操作:

      ansible-playbook -i inventory/mycluster/hosts.ini reset.yml

      安裝失敗清理Kubernetes機(jī)器

      rm -rf /etc/kubernetes/

      rm -rf /var/lib/kubelet

      rm -rf /var/lib/etcd

      rm -rf /usr/local/bin/kubectl

      rm -rf /etc/systemd/system/calico-node.service

      rm -rf /etc/systemd/system/kubelet.service

      systemctl stop etcd.service

      systemctl disable etcd.service

      systemctl stop calico-node.service

      systemctl disable calico-node.service

      docker stop $(docker ps -q)

      docker rm $(docker ps -a -q)

      service docker restart

      參考資料

      參考了一下的文章:

      https://github.com/kubernetes-incubator/kubespray

      https://mp.weixin.qq.com/s/-SXuXhY7KIFl1zYvVT93ZA

      https://blog.csdn.net/zhuchuangang/article/details/77712614

      Kubernetes 鏡像服務(wù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎么取消下拉菜單(怎么取消下拉菜單中的熱搜應(yīng)用)
      下一篇:如何在WPS文檔中,設(shè)置每頁顯示22行、每行28個字符(wps怎么設(shè)置每行28個字符 每頁22行)
      相關(guān)文章
      亚洲av乱码一区二区三区按摩| 精品亚洲综合久久中文字幕| 亚洲色成人网站WWW永久| tom影院亚洲国产一区二区| 亚洲中文字幕无码久久综合网| 亚洲美女高清一区二区三区 | 亚洲日韩一区二区三区| 亚洲丝袜中文字幕| 亚洲视频免费一区| 亚洲国产日韩在线一区| 亚洲人成网站日本片| 亚洲欧洲日产韩国在线| 亚洲综合一区二区精品导航| 亚洲精品视频在线| 久久丫精品国产亚洲av不卡| 亚洲综合久久成人69| 亚洲综合色丁香麻豆| 亚洲国产精品yw在线观看| ww亚洲ww在线观看国产| 亚洲午夜无码久久久久小说| 亚洲AV成人片无码网站| 在线观看免费亚洲| 亚洲熟伦熟女新五十路熟妇| 久久亚洲中文字幕精品一区| 亚洲国产另类久久久精品黑人 | 国产亚洲3p无码一区二区| 国产精品久久久亚洲| 亚洲日韩图片专区第1页| 亚洲精品在线不卡| 中文字幕乱码亚洲无线三区| 亚洲精品色播一区二区| 亚洲?V无码乱码国产精品| 亚洲国产成人VA在线观看| 亚洲日韩av无码| 夜夜亚洲天天久久| 亚洲狠狠成人综合网| 噜噜综合亚洲AV中文无码| 精品国产日韩亚洲一区| 亚洲AV无码成人网站久久精品大 | 日批日出水久久亚洲精品tv| 国产亚洲精品成人a v小说|