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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

使用Kubeadm创建k8s集群之节点部署(三十二)

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Kubeadm创建k8s集群之节点部署(三十二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


前言? ? ? ? ?

由于上次忘開申明原創,特再發一次。

本篇部署教程將講述k8s集群的節點(master和工作節點)部署,請先按照上一篇教程完成節點的準備。本篇教程中的操作全部使用腳本完成,并且對于某些情況(比如鏡像拉取問題)還提供了多種解決方案。不過基于部署環境和k8s的復雜性,我們需要對k8s集群部署過程中的一些步驟都有所了解,尤其是kubeadm init命令。



目錄


主節點部署?

  • Kubeadm以及相關工具包的安裝

  • 批量拉取k8s相關鏡像

  • 使用“kubeadm init”啟動k8s主節點

  • 啟動k8s主節點

  • kubectl認證

  • 安裝flannel網絡插件

  • 檢查集群狀態

  • 工作節點部署?

  • 安裝 kubelet

  • 拉取相關鏡像

  • 使用“kubeadm join”將當前節點加入集群

  • 復制admin.conf并且設置配置

  • 查看集群節點狀態

  • 安裝儀表盤?


    主節點部署

    當上述步驟完成后,我們依照以下步驟來完成主節點的安裝:


    1.Kubeadm以及相關工具包的安裝


    安裝腳本如下所示:

    #配置源 echo '#k8s [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 '>/etc/yum.repos.d/kubernetes.repo #kubeadm和相關工具包 yum -y install kubelet kubeadm kubectl kubernetes-cni

    注意,以上腳本使用阿里云鏡像進行安裝。


    如果成功安裝,會提示“完畢!”:

    安裝完成之后,需要重啟kubelet:

    systemctl daemon-reload systemctl enable kubelet


    2.批量拉取k8s相關鏡像


    如果使用代理、國際網絡或者指定鏡像庫地址,此步驟可以忽略。在國內,由于國際網絡問題,k8s相關鏡像在國內可能無法下載,因此我們需要手動準備。

    首先,我們先使用“kubeadm config”命令來查看kubeadm相關鏡像的列表:

    kubeadm config images list

    接下來我們可以從其他倉庫批量下載鏡像并且修改鏡像標簽:

    #批量下載鏡像 kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x #批量命名鏡像 docker images |grep mirrorgooglecontainers |awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's# mirrorgooglecontainers# k8s.gcr.io#2' |sh -x #批量刪除mirrorgooglecontainers鏡像 docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x # coredns沒包含在docker.io/mirrorgooglecontainers中 docker pull coredns/coredns:1.3.1 docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1 docker rmi coredns/coredns:1.3.1

    注:coredns沒包含在docker.io/mirrorgooglecontainers中,需要手工從coredns官方鏡像轉換下。


    經過漫長的等待之后,如果鏡像下載完成,我們可以執行命令“docker images”來查看本地鏡像是否均已準備妥當:

    東西都準備好了,接下來我們就可以來創建集群了。


    3.使用“kubeadm init”啟動k8s主節點


    在前面,我們講解過了“kubeadm init”命令可以用于啟動一個Kubernetes主節點,語法如下所示:

    kubeadm init [flags]

    其中主要的參數如下所示:

    可選參數

    說明

    --apiserver-advertise-address

    指定API Server地址

    --apiserver-bind-port

    指定綁定的API Server端口,默認值為6443

    --apiserver-cert-extra-sans

    指定API Server的服務器證書

    --cert-dir

    指定證書的路徑

    --dry-run

    輸出將要執行的操作,不做任何改變

    --feature-gates

    指定功能配置鍵值對,可控制是否啟用各種功能

    -h, --help

    輸出init命令的幫助信息

    --ignore-preflight-errors

    忽視檢查項錯誤列表,例如“IsPrivilegedUser,Swap”,如填寫為 'all' 則將忽視所有的檢查項錯誤

    --kubernetes-version

    指定Kubernetes版本

    --node-name

    指定節點名稱

    --pod-network-cidr

    指定pod網絡IP地址段

    --service-cidr

    指定service的IP地址段

    --service-dns-domain

    指定Service的域名,默認為“cluster.local”

    --skip-token-print

    不打印Token

    --token

    指定token

    --token-ttl

    指定token有效時間,如果設置為“0”,則永不過期

    --image-repository

    指定鏡像倉庫地址,默認為"k8s.gcr.io"

    值得注意的是,如上所述,如果我們不想每次都手動批量拉取鏡像,我們可以使用參數“--image-repository”來指定第三方鏡像倉庫,如下述命令所示:

    kubeadm init --kubernetes-version=v1.15.0 --apiserver-advertise-address=172.16.2.201 --pod-network-cidr=10.0.0.0/16 --service-cidr 11.0.0.0/12 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

    “kubeadm init”命令會執行系列步驟來保障啟動一個k8s主節點,我們可以通過命令“kubeadm init --dry-run”來查看其將進行的一些步驟,了解了其動作,我們才能保障在安裝的過程中處理起來游刃有余:

    如上圖所示,其主體常規步驟(部分步驟根據參數會有變動)如下:

  • 確定Kubernetes版本。

  • 預檢。出現錯誤則退出安裝,比如虛擬內存(swap)沒關閉,端口被占用。出現錯誤時,請用心按照按照提示進行處理,不推薦使用“--ignore-preflight-errors”來忽略。

  • 寫入kubelet配置。

  • 生成自簽名的CA證書(可指定已有證書)。

  • 將 kubeconfig 文件寫入 /etc/kubernetes/ 目錄以便 kubelet、controller-manager 和 scheduler 用來連接到 API server,它們每一個都有自己的身份標識,同時生成一個名為 admin.conf 的獨立的kubeconfig文件,用于管理操作(我們下面會用到)。

  • 為 kube-apiserver、kube-controller-manager和kube-scheduler生成靜態Pod的定義文件。如果沒有提供外部的etcd服務的話,也會為etcd生成一份額外的靜態Pod定義文件。這些靜態Pod的定義文件會寫入到“/etc/kubernetes/manifests”目錄(如下圖所示),kubelet會監視這個目錄以便在系統啟動的時候創建這些Pod。


  • 注意:靜態Pod是由kubelet進行管理,僅存在于特定節點上的Pod。它們不能通過API Server進行管理,無法與ReplicationController、Deployment或DaemonSet進行關聯,并且kubelet也無法對其健康檢查。靜態 Pod 始終綁定在某一個kubelet,并且始終運行在同一個節點上。


  • 對master節點應用labels和taints以便不會在它上面運行其它的工作負載,也就是說master節點只做管理不干活。

  • 生成令牌以便其它節點注冊。

  • 執行必要配置(比如集群ConfigMap,RBAC等)。

  • 安裝“CoreDNS”組件(在 1.11 版本以及更新版本的Kubernetes中,CoreDNS是默認的DNS服務器)和“kube-proxy”組件。


  • 4.啟動k8s主節點


    根據前面的規劃,以及剛才講述的“kubeadm init”命令語法和執行步驟,我們使用如下命令來啟動k8s集群主節點:

    kubeadm init --kubernetes-version=v1.15.0 --apiserver-advertise-address=172.16.2.201 --pod-network-cidr=10.0.0.0/16 --service-cidr 11.0.0.0/16

    其中,kubernetes version為v1.15.0,apiserver地址為172.16.2.201,pod IP段為10.0.0.0/16。

    具體執行細節如下所示:

    集群創建成功后,注意這一條命令需要保存好,以便后續將節點添加到集群時使用:

    kubeadm join 172.16.2.201:6443 --token jx82lw.8ephcufcot5j06v7 \ --discovery-token-ca-cert-hash sha256:180a8dfb45398cc6c3addd84a61c1bd4364297da1e91611c8c46a976dc12ff17

    令牌是用于主節點和新添加的節點之間進行相互身份驗證的,因此需要確保其安全,因為任何人一旦知道了這些令牌,就可以隨便給集群添加節點。如果令牌過期了,我們可以使用 “kubeadm token”命令來列出、創建和刪除這類令牌,具體操作見后續的《集群異常解決方案》。


    5.kubectl認證


    集群主節點啟動之后,我們需要使用kubectl來管理集群,在開始前,我們需要設置其配置文件進行認證。

    這里我們使用root賬戶,命令如下所示:

    #kubectl認證 export KUBECONFIG=/etc/kubernetes/admin.conf

    如果是非root賬戶,則需要使用以下命令:

    # 如果是非root用戶 $ mkdir -p $HOME/.kube $ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ chown $(id -u):$(id -g) $HOME/.kube/config


    6.安裝flannel網絡插件


    這里我們使用默認的網絡組件flannel,相關安裝命令如下如下所示:

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    命令“kubectl apply”可以用于創建和更新資源,以上命令使用了網絡路徑的yaml來進行創建flanner:


    7.檢查集群狀態


    安裝完成之后,我們可以使用以下命令來檢查集群組件是否運行正常:

    kubectl get cs

    同時,我們需要確認相關pod已經正常運行,如下所示:

    kubectl get pods -n kube-system -o wide

    如果coredns崩潰或者其他pod崩潰,可參考后續章節的常見問題進行解決,請注意確保這些pod正常運行(Running狀態)后再添加工作節點。

    如果命名空間“kube-system”下的pod均正常運行,那么我們的主節點已經成功的啟動了,接下來我們來完成工作節點的部署。



    工作節點部署


    這里我們以Node1節點為例進行安裝。開始安裝之前,請確認已經完成之前的步驟(設置主機、IP、系統、Docker和防火墻等)。注意主機名、IP等配置不要出現重復和錯誤。


    1.安裝 kubelet和kubeadm


    kubelet是節點代理,而kubeadm則用于將當前節點加入集群。下面我們就開始進行安裝,

    安裝命令如下所示:

    #配置源 echo '#k8s [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 '>/etc/yum.repos.d/kubernetes.repo #kubeadm和相關工具包 yum -y install kubelet kubeadm

    重啟kubelet:

    systemctl daemon-reload systemctl enable kubelet


    2.拉取相關鏡像


    請參考上面小節中的《批量拉取k8s相關鏡像》,此處略過。


    3.使用“kubeadm join”將當前節點加入集群


    “kubeadm join”命令可以啟動一個Kubernetes工作節點并且將其加入到集群,語法如下所示:

    kubeadm join [api-server-endpoint] [flags]

    使用“kubeadm join”就相對簡單多了,這里,我們回到前面,找到使用“kubeadm init”啟動主節點時打印出來的“kubeadm join”腳本進行執行:

    kubeadm join 172.16.2.201:6443 --token jx82lw.8ephcufcot5j06v7 \ --discovery-token-ca-cert-hash sha256:180a8dfb45398cc6c3addd84a61c1bd4364297da1e91611c8c46a976dc12ff17

    如未保存該命令或者token已過期,請參考后續章節的常見問題。這里,正常情況下加入成功后如下所示:

    加入集成成功之后,k8s就會自動調度Pod,這時我們僅需耐心等待即可。


    4.復制admin.conf并且設置配置


    為了在工作節點上也能使用kubectl,而kubectl命令需要使用kubernetes-admin來運行,因此我們需要將主節點中的【/etc/kubernetes/admin.conf】文件拷貝到工作節點相同目錄下,這里推薦使用scp進行復制,語法如下所示:

    #復制admin.conf,請在主節點服務器上執行此命令 scp /etc/kubernetes/admin.conf {當前工作節點IP}:/etc/kubernetes/admin.conf

    具體執行內容如下:

    scp /etc/kubernetes/admin.conf 172.16.2.202:/etc/kubernetes/admin.conf scp /etc/kubernetes/admin.conf 172.16.2.203:/etc/kubernetes/admin.conf

    復制時需要輸入相關節點的root賬戶的密碼:

    復制完成之后,我們就可以設置kubectl的配置文件了,以便我們在工作節點上也可以使用kubectl來管理k8s集群:

    #設置kubeconfig文件 export KUBECONFIG=/etc/kubernetes/admin.conf echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

    至此,k8s工作節點的部署初步完成。接下來,我們需要以同樣的方式將其他工作節點加入到集群之中。


    5.查看集群節點狀態


    集群創建完成之后,我們可以輸入以下命令來查看當前節點狀態:

    kubectl get nodes

    接下來,我們可以開始按需安裝儀表盤以及部署應用了。



    安裝儀表盤


    命令如下所示:

    #如果使用代理或者使用國際網絡,則可跳過此步驟 docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 #安裝儀表盤 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

    創建admin權限: echo ' --- apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard-admin labels: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard-admin namespace: kube-system' >kubernetes-dashboard-admin.rbac.yaml kubectl create -f kubernetes-dashboard-admin.rbac.yaml

    使用命令得到token:

    #獲取token名稱 kubectl -n kube-system get secret | grep kubernetes-dashboard-admin #根據名稱拿到token kubectl describe -n kube-system secret/kubernetes-dashboard-admin-token-lphq4

    接下來可以使用以下命令來訪問面板:

    kubectl proxy

    訪問地址如下所示:

    http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

    這里我們輸入我們剛才得到的Token,登錄之后如下所示:

    我們可以通過儀表盤來查看節點信息:


    往期內容


    Docker+ Kubernetes已成為云計算的主流(二十六)

    容器化之后如何節省云端成本?(二十七)

    了解Kubernetes主體架構(二十八)

    使用Minikube部署本地Kubernetes集群(二十九)

    使用kubectl管理k8s集群(三十)

    使用Kubeadm創建k8s集群之部署規劃(三十一)


    總結

    以上是生活随笔為你收集整理的使用Kubeadm创建k8s集群之节点部署(三十二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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