利用kubeadm安裝centos7.4三節點K8S-1.11版本集群-詳細安裝過程記錄

      網友投稿 1046 2022-05-30

      前言:三個節點的節點配置相關信息以及各個節點的Docker安裝,見我的前兩篇博客!下面開始正文。

      安裝K8S集群及網絡組件

      2.6.1安裝前準備工作

      K8S官方安裝文檔建議每個節點在安裝前都需要禁用SELINUX

      Note:

      Disabling SELinux by running?setenforce 0?is required to allow containers to access the host filesystem, which is required by pod networks for example. You have to do this until SELinux support is improved in the kubelet.

      Node1節點SELINUX已禁用!

      2.6.2配置安裝源-官方文檔/阿里云源

      cat? <?/etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg?https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF setenforce? 0

      這里由于我們沒法用京東云主機翻墻,因此我直接配置阿里的鏡像安裝K8S

      cat?<?/etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg?https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF

      增加了kubernetes.repo

      2.6.3安裝K8S組件

      #yum?install?-y?kubelet?kubeadm?kubectl?ipvsadm #yum?install?-y?kubelet?kubeadm?kubectl?--disableexcludes=kubernetes?(官方文檔命令)

      安裝完成!

      重啟K8S相關服務

      #systemctl?enable?kubelet?&&?systemctl?start?kubelet

      2.6.4配置相關參數

      A:分別配置三臺主機hosts文件解析

      B:關閉系統swap分區(三節點全部操作)

      # 臨時關閉swap

      # 永久關閉 注釋/etc/fstab文件里swap相關的行

      swapoff?-a

      這里解析下為什么要關閉系統的swap分區:

      kubernetes的想法是將實例緊密包裝到盡可能接近100%。 所有的部署應該與CPU /內存限制固定在一起。 所以如果調度程序發送一個pod到一臺機器,它不應該使用交換。 設計者不想交換,因為它會減慢速度。所以關閉swap主要是為了性能考慮。當然為了一些節省資源的場景,比如運行容器數量較多,可添加kubelet參數?--fail-swap-on=false來解決。

      C:開啟forward(三節點全部操作)

      Docker從1.13版本開始調整了默認的防火墻規則

      禁用了iptables filter表中FOWARD鏈

      這樣會引起Kubernetes集群中跨Node的Pod無法通信

      #?iptables?-P?FORWARD?ACCEPT

      D:配置相關轉發參數(三節點全部操作)

      CentOS/redhat上可能會出現路由失敗,因此需要做如下配置:

      cat?<??/etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables?=?1 net.bridge.bridge-nf-call-iptables?=?1 vm.swappiness=0 EOF sysctl?--system

      E:配置pause鏡像/cgroup等(三節點全部操作)

      #?配置kubelet使用國內pause鏡像 #?配置kubelet的cgroups #?獲取docker的cgroups DOCKER_CGROUPS=$(docker?info?|?grep?'Cgroup'?|?cut?-d'?'?-f3) echo?$DOCKER_CGROUPS cat?>/etc/sysconfig/kubelet<

      2.6.5初始化master節點

      kubeadm?init?--kubernetes-version=v1.11.0?--pod-network-cidr=10.244.0.0/16

      報錯了,截圖如下:

      應該是無法直接從google拉取相關容器鏡像,但是我應該配置過阿里的K8S鏡像源了為啥還報錯呢?(這里是個巨大的坑,最主要的原因是沒有科學上網,后面自己做實驗的小伙伴,要不想辦法讓你的環境科學上網,要不就自己把需要的鏡像全部pull到本地節點,然后按照他們的要求用docker tag命令修改成他要求的格式image,后面我會繼續遇到此類問題,請繼續往下圍觀。。。)

      利用kubeadm安裝centos7.4三節點K8S-1.11版本集群-詳細安裝過程記錄

      解決辦法:新建一個執行腳本,先把鏡像下載下來后改名然后再做kubeadm初始化工作(腳本內容和腳本執行后的結果如下圖,從腳本內容看,這個腳本也是網上的兄弟分享出來的,這位兄弟寫的腳本也是從自己的私有鏡像倉庫里拉到本地節點,然后修改image的名稱)

      以上運行后發現還是有三個包無法下載下來,但是比第一次要少,第一次一共有7個image無法pull,前面有截圖大家可以對比一下

      備注:腳本內容有問題,最后三個包(k8s.gcr.io/pause:3.1; k8s.gcr.io/etcd-amd64:3.2.18 ;k8s.gcr.io/coredns:1.1.3)在腳本里的版本不一致,更換腳本內容如下:

      重新執行腳本,截圖如下:

      再次開始初始化,前面是K8S版本號,后面是你POD 網絡的 IP 段(為啥非得是這個網段?flannel網絡默認?-確實是flannel網絡默認的pod網絡地址段)

      初始化成功!

      最下面的這行kubeadm join,就是用來讓別的node加入集群的,可以看出非常方便。我們要保存好這一行東西,這是我們之后讓node加入集群的憑據,一會兒會用到。

      kubeadm?join?192.168.0.12:6443?--token?m9t7wo.ut3wimfioutlvdmw?--discovery-token-ca-cert-hash?sha256:8d11ddabde6a0b597bae9e0df488b14101486c7406797b10716e3fd053a31920

      這個時候,我們還不能通過kubectl來控制集群,要讓kubectl可用(配置 kubectl認證信息),我們需要做:

      #?對于非root用戶 $?mkdir?-p?$HOME/.kube $?sudo?cp?-i?/etc/kubernetes/admin.conf?$HOME/.kube/config $?sudo?chown?$(id?-u):$(id?-g)?$HOME/.kube/config #?對于root用戶$?export?KUBECONFIG=/etc/kubernetes/admin.conf #?也可以直接放到~/.bash_profile(推薦用這個命令) $?echo?"export?KUBECONFIG=/etc/kubernetes/admin.conf"?>>?~/.bash_profile

      2.6.6安裝網絡network add-on(flannel)

      network addon必須在任何app部署之前安裝好。同樣的,kube-dns也會在network addon安裝好之后才啟動。kubeadm只支持CNI-based networks(不支持kubenet)。

      比較常見的network addon有:Calico,?Canal,?Flannel,?Kube-router,?Romana,?Weave Net等。這里我們使用Flannel。

      #?下載配置 mkdir?flannel?&&?cd?flannel wget?? #?修改配置yaml文件 #?此處的ip配置要與上面kubeadm的pod-network一致 ??net-conf.json:?| ????{??????"Network":?"10.244.0.0/16",?????? ??????????????"Backend":?{???????? ??????????????"Type":?"vxlan" ??????} ????} ????#?修改鏡像 ????image:?registry.cn-shanghai.aliyuncs.com/gcr-k8s/flannel:v0.10.0-amd64 ????#?如果Node有多個網卡的話,參考flannel?issues?39701, ????#?https://github.com/kubernetes/kubernetes/issues/39701 ????#?目前需要在kube-flannel.yml中使用--iface參數指定集群主機內網網卡的名稱, ????#?否則可能會出現dns無法解析。容器無法通信的情況,需要將kube-flannel.yml下載到本地, ????#?flanneld啟動參數加上--iface= ????containers: ??????-?name:?kube-flannel ????????image:?registry.cn-shanghai.aliyuncs.com/gcr-k8s/flannel:v0.10.0-amd64???????? ????????command: ????????-?/opt/bin/flanneld ????????args: ????????-?--ip-masq ????????-?--kube-subnet-mgr ????????-?--iface=eth1#?啟動kubectl?apply?-f?kube-flannel.yml#?查看kubectl?get?pods?--namespace?kube-system kubectl?get?svc?--namespace?kube-system

      創建flannel目錄,并進入目錄,利用wget下載flannelv0.10.0版本的yml文件,如下圖:

      執行kubectl?apply?-f?kube-flannel.yml

      #?查看 kubectl?get?pods?--namespace?kube-system kubectl?get?svc?--namespace?kube-system

      2.6.7配置節點加入集群

      在其他兩個節點輸入我們之前在做kubeadm初始化的時候命令行給出的命令:

      小技巧

      忘記初始master節點時的node節點加入集群命令怎么辦(在master節點輸入)

      #?簡單方法 kubeadm?token?create?--print-join-command #?第二種方法token=$(kubeadm?token?generate) kubeadm?token?create?$token?--print-join-command?--ttl=0

      查看節點狀態

      kubectl?get?node

      接下來看我在安裝flannel組件的時候踩過的坑,以及如何解決!!!

      2.6.8解決flannel報錯問題

      安裝完flannel網絡組件查看狀態的時候發現有錯誤出現:導致我剛開始沒發現,當在創建pod的時候,一直提示containercreating,容器創建中,始終無法創建成功!!!

      進一步看看報錯信息發現:

      解決方案:

      針對缺少k8s.gcr.io/kube-proxy-amd64:V1.11.0的解決方案思路是,從阿里云鏡像服務市場內pull了一個V1.11.1的包,然后重新tag!

      備注:第二行命令里面 k8s前面的“tag”多余了。

      結果發現還是報錯,原因是我實在找不到v1.11.0的包,用pull了一個v1.11.1d的image,最后無奈就又用tag命令把版本更換成v1.11.0后,再次

      Kubectl describe pod –namespace=kube-system發現之前報錯的兩個節點的proxy服務正常!

      但是flannel的組件在node2和node3仍然報錯,之前我們查看過詳細報錯說是flannel的image已經在節點存在,于是我們就到node2和node3上分別重啟了kubelet服務 systemctl restart kubelet后,全部正常:

      至此 3節點的K8S集群+flannel安裝完成。

      最后給大家分享一個學習k8s的視頻網站,馬哥的教程,我看了非常深入也成體系,講解由淺入深,我覺得非常棒,解決了我很多在普通的文章里看不到的疑問!!!大家可以掃碼學習,價格也不算貴!

      CentOS Kubernetes

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:四種跨瀏覽器窗口通訊
      下一篇:Pathlib庫:Python面向對象的文件路徑處理
      相關文章
      亚洲国产专区一区| 日本中文一区二区三区亚洲| 亚洲视屏在线观看| 亚洲av午夜电影在线观看 | 亚洲国产日韩在线一区| 亚洲婷婷国产精品电影人久久| 亚洲一级毛片免费观看| 亚洲国产精品一区二区第一页| 亚洲av永久无码精品秋霞电影秋 | 国产精品亚洲片夜色在线| 国产精品亚洲片在线| 无码亚洲成a人在线观看| 亚洲国产欧美一区二区三区| 亚洲日本在线观看网址| 国产A在亚洲线播放| 国产亚洲美女精品久久久2020 | 亚洲欧洲日产国码无码久久99| 亚洲中文字幕久久精品无码APP | 亚洲av午夜福利精品一区| 亚洲精品第一国产综合境外资源| 亚洲精品美女久久久久99小说| 亚洲日本韩国在线| 亚洲午夜AV无码专区在线播放 | 国产亚洲情侣一区二区无| 亚洲人成网站色在线入口| 亚洲 无码 在线 专区| 亚洲国产人成在线观看| 亚洲欧洲国产经精品香蕉网| 亚洲一级大黄大色毛片| 亚洲Av高清一区二区三区| 亚洲欧美乱色情图片| 亚洲乱码一区av春药高潮| 2020国产精品亚洲综合网| 亚洲视频一区在线观看| 国产日产亚洲系列最新| 亚洲国产精品一区二区第四页| 日韩一卡2卡3卡4卡新区亚洲 | 亚洲欧洲日韩极速播放| 亚洲第一se情网站| 日本亚洲精品色婷婷在线影院| 亚洲精品无码久久久久久久 |