日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

centos7下使用kubeadm安装k8s

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos7下使用kubeadm安装k8s 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? kubeadm是官方社區推出的一個用于快速部署kubernetes集群的工具。這個工具能通過兩條指令完成一個kubernetes集群的部署。

在開始之前,部署Kubernetes集群機器需要滿足以下幾個條件:

- 一臺或多臺機器,操作系統 CentOS7.x-86_x64
- 硬件配置:2GB或更多RAM,2個CPU或更多CPU,硬盤30GB或更多
- 可以訪問外網,需要拉取鏡像,如果服務器不能上網,需要提前下載鏡像并導入節點
- 禁止swap分區

1.環境準備

在安裝ku8s的之前,使用的是阿里云鏡像加速,使用的yum源也是阿里云的,配置如下:

[root@k8snode yum.repos.d]# cat /etc/docker/daemon.json { "registry-mirrors": [""https://mj9kvemk.mirror.aliyuncs.com"] }

但是在5.21發現阿里云提示一直在維護,下載過程出現如下錯誤:

failure: repodata/repomd.xml from AppStream: [Errno 256] No more mirrors to try. https://mirrors.aliyun.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found http://mirrors.cloud.aliyuncs.com/centos/7/AppStream/x86_64/os/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"

提示這些請求地址無法訪問,確實發現是無法訪問,因此修改使用網易的鏡像加速和網易的yum源

{"registry-mirrors": ["http://hub-mirror.c.163.com"] } 接著執行如下命令 sudo systemctl daemon-reload sudo systemctl restart docker

接著修改使用網易的yum源

  • 首先備份/etc/yum.repos.d/CentOS-Base.repo
  • [root@localhost yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

    ? ? 2.下載對應版本repo文件, 放入/etc/yum.repos.d/(操作前請做好相應備份)

    [root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

    ? ?3.運行如下命令生成緩存

    [root@localhost yum.repos.d]# yum clean all [root@localhost yum.repos.d]# yum makecache

    設置kubernetes yum源

    ? ? ?注意如果設置了添加阿里云YUM軟件源或者是騰訊的 kubernetes yum源,此時可能存在yum makecache失敗,報錯如下:

    https://mirrors.cloud.tencent.com/kubernetes/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml.asc: [Errno 14] HTTPS Error 404 - Not Found Trying other mirror.

    注意到,配置的kubernetes.repo

    [root@localhost yum.repos.d]# cat kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.cloud.tencent.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.cloud.tencent.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.cloud.tencent.com/kubernetes/yum/doc/rpm-package-key.gpg
    • [] 中括號中的是repository id,唯一,用來標識不同倉庫
    • name 倉庫名稱,自定義
    • baseurl 倉庫地址
    • enable 是否啟用該倉庫,默認為1表示啟用
    • gpgcheck 是否驗證從該倉庫獲得程序包的合法性,1為驗證
    • repo_gpgcheck 是否驗證元數據的合法性 元數據就是程序包列表,1為驗證
    • gpgkey=URL 數字簽名的公鑰文件所在位置,如果gpgcheck值為1,此處就需要指定gpgkey文件的位置,如果gpgcheck值為0就不需要此項了

    如果k8s yum 配置成aliyun,則對于可以將kubernetes.repo設置如下:

    $ cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
    角色定位IP地址
    k8smaster192.168.0.100
    k8snode192.168.0.102

    因為這里是使用kubeadm安裝,因此使用兩臺環境就可以模擬了。

    1.master和node主機均關閉防火墻

    systemctl stop firewalld #臨時關閉 systemctl disable firewalld #永久關閉

    關于防火墻的原因(nftables后端兼容性問題,產生重復的防火墻規則)

    Theiptablestooling can act as a compatibility layer, behaving like iptables but actually configuring nftables. This nftables backend is not compatible with the current kubeadm packages: it causes duplicated firewall rules and breakskube-proxy.
    ?

    2.master和node主機均關閉selinux

    sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 setenforce 0 # 臨時

    關于selinux的原因(關閉selinux以允許容器訪問宿主機的文件系統)

    Setting SELinux in permissive mode by runningsetenforce 0andsed ...effectively disables it. This is required to allow containers to access the host filesystem, which is needed by pod networks for example. You have to do this until SELinux support is improved in the kubelet.

    3.master和node主機均關閉swap

    swapoff -a ?# 臨時 sed -ri 's/.*swap.*/#&/' /etc/fstab ? ?# 永久

    這里之所以要關閉swap分區,?swap,這個當內存不足時,linux會自動使用swap,將部分內存數據存放到磁盤中,這個這樣會使性能下降,為了性能考慮推薦關掉,可參考github說明

    4.根據規劃設置主機名

    hostnamectl set-hostname k8smaster //在master主機上執行 hostnamectl set-hostname k8snode //在node主機上執行

    5.在master結點添加hosts

    cat >> /etc/hosts << EOF 192.168.0.100 k8smaster 192.168.0.102 k8snode EOF

    6.將橋接的IPv4流量傳遞到iptables的鏈

    cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system ?# 生效

    7.時間同步

    yum install ntpdate -y ntpdate time.windows.com

    2.安裝Docker/kubeadm/kubelet

    首先安裝wget命令

    yum install wget -y $ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo $ yum -y install docker-ce-18.06.1.ce-3.el7 $ systemctl enable docker && systemctl start docker //設置開機啟動并啟動起來 $ docker --version Docker version 18.06.1-ce, build e68fc7a

    //配置鏡像加速器

    $ cat > /etc/docker/daemon.json << EOF {"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF

    或者使用網易的鏡像加速

    $ cat > /etc/docker/daemon.json << EOF {"registry-mirrors": ["http://hub-mirror.c.163.com"] } EOF

    配置鏡像加速之后,需要進行如下設置

    sudo systemctl daemon-reload? sudo systemctl restart docker

    3.1.配置k8s-yum源

    配置aliyun-YUM源

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

    或者配置

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

    注意這里配置的gpgcheck=0,repo_gpgcheck=0,實驗發現配置為1會提示404的錯誤

    3.2.安裝kubeadm,kubelet和kubectl

    $ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 //兩臺機器均安裝 $ systemctl enable kubelet //設置開機啟動

    這里安裝如果不指定版本號,則默認使用最新的版本號。之所以這里安裝使用非最新的,放置因為最新版本安裝出現的問題,因此選擇使用一個較為穩定的版本。安裝成功之后如下

    Dependency Installed:conntrack-tools.x86_64 0:1.4.4-7.el7 cri-tools.x86_64 0:1.13.0-0 kubernetes-cni.x86_64 0:0.8.7-0libnetfilter_cthelper.x86_64 0:1.0.0-11.el7 libnetfilter_cttimeout.x86_64 0:1.0.0-7.el7 libnetfilter_queue.x86_64 0:1.0.2-2.el7_2socat.x86_64 0:1.7.3.2-2.el7Complete!

    4.部署Kubernetes Master

    在Master結點中執行

    kubeadm init --apiserver-advertise-address=192.168.0.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

    這里的apiserver-advertise-address自然是master結點的ip地址,另外兩個地址只要和本地的不一致即可

    參數說明

    • --apiserver-advertise-address=192.168.0.100? ? 這個參數就是master主機的IP地址,例如我的Master主機的IP是:192.168.0.100
    • --image-repository=registry.aliyuncs.com/google_containers? 這個是鏡像地址,由于國外地址無法訪問,故使用的阿里云倉庫地址:registry.aliyuncs.com/google_containers
    • --kubernetes-version=v1.18.0? ?這個參數是下載的k8s軟件版本號
    • --service-cidr=10.96.0.0/12? ? ? ?這個參數后的IP地址直接就套用10.96.0.0/12?,以后安裝時也套用即可,不要更改
    • --pod-network-cidr=10.244.0.0/16? ? ? ?k8s內部的pod節點之間網絡可以使用的IP段,不能和service-cidr寫一樣,如果不知道怎么配,就先用這個10.244.0.0/16

    初始化比較耗時。安裝成功后會提示下文如何操作

    Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.0.100:6443 --token 38uvba.z8u5cwyxscxmzzij \--discovery-token-ca-cert-hash sha256:f3cf79c32b9026a8999b5b99f5d8a5cc4a080dca16733bd4d70dc936f27cc393

    按照上文中提示執行:

    mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

    執行完成后,使用命令查看

    [root@k8smaster yum.repos.d]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8smaster NotReady master 10m v1.18.0

    展示 k8smaster結點的狀態為NotReady?

    5.加入Kubernetes Node

    同樣這里也是使用kubeadm命令執行結果中的命令,因為這里提示了下文如何操作,注意這里是在k8snode結點上操作

    [root@k8snode ~]# kubeadm join 192.168.0.100:6443 --token 38uvba.z8u5cwyxscxmzzij \ > --discovery-token-ca-cert-hash sha256:f3cf79c32b9026a8999b5b99f5d8a5cc4a080dca16733bd4d70dc936f27cc393

    在node結點配置之后 ,此時在回到master結點上進行查看

    總結

    以上是生活随笔為你收集整理的centos7下使用kubeadm安装k8s的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。