国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

體驗istio(二):kubeadm安裝k8s集群

這篇具有很好參考價值的文章主要介紹了體驗istio(二):kubeadm安裝k8s集群。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在這一篇中我們將使用kubeadm基于ubuntu22.04部署一個控制、工作節(jié)點分離的雙節(jié)點集群用于測試,沒有高可用加入,使用kubeadm的原因首先是它支持生產(chǎn)級部署,穩(wěn)定性上沒問題,而這里的測試環(huán)境也沒有基礎(chǔ)設(shè)施自動化相關(guān)的需求。注意,在部署k8s方面,官方文檔已經(jīng)非常詳盡,此處不再做太多的細節(jié)說明,如果有細節(jié)問題請查看列出的官方參考,或者可以通過評論提出問題。

這里需要注意kubeadm的版本,它決定了k8s的版本,參考istio的Getting Started文檔,里面指出了能夠支持的k8s最新版本為1.28。所以我們的根參考文檔是k8s1.28的文檔:https://v1-28.docs.kubernetes.io/docs/setup/production-environment/tools/kubeadm/,注意鏈接中的v1-28字樣,博客中所有官方文檔鏈接都是1.28版本的。

如果你從k8s官網(wǎng)進入文檔,記得在文檔右上角切換版本:

體驗istio(二):kubeadm安裝k8s集群,云原生,kubernetes

準備

有兩個節(jié)點:

  • m,master節(jié)點,運行控制面組件
  • w,worker節(jié)點,運行應(yīng)用負載

基礎(chǔ)環(huán)境

參考Before you begin,這里僅列出容易出現(xiàn)問題的點:

  • 最低配置為2c2g
  • 集群內(nèi)機器hostname、mac、product_uuid唯一,k8s利用后兩者標識不同的節(jié)點
  • 必須關(guān)閉swap,因為cgroupv1不支持swap,kubeadm雖然已經(jīng)包含支持swap的beat特性但默認關(guān)閉,并且默認情況下它檢測到使用swap會退出,實際上,swap是內(nèi)存昂貴時代的解決方案,以降低服務(wù)質(zhì)量(換入換出會對程序性能產(chǎn)生很大的影響)來換取可用性,但以當今的服務(wù)量級,服務(wù)質(zhì)量下降可能帶來其他更多的問題,所以大多數(shù)情況下都不建議開啟swap,內(nèi)存不夠可以增加,也不必再關(guān)注swap內(nèi)存回收的細節(jié),感興趣可以閱讀為什么 Linux 需要 Swapping
  • 在每個節(jié)點安裝容器運行時,在本系列第一篇中已經(jīng)部署了contianerd

在后面的安裝k8s集群部分還有一些準備工作。

安裝kubeadm和組件

在每個節(jié)點安裝kubeadm、kubelet,在需要命令行客戶端的節(jié)點安裝kubectl,參考Installing kubeadm, kubelet and kubectl,因為是全新安裝所以不必關(guān)注k8s組件版本兼容規(guī)則,需要注意三點:

  • 安裝istio支持的1.28版本,使用1.28版本文檔中的命令就會安裝1.28的最新修訂版本
  • 為kubelet指定cgroup driver為systemd,與容器運行時保持一致
  • 別遺漏命令sudo apt-mark hold kubelet kubeadm kubectl以鎖定版本,否則自動升級會帶來比較大的風(fēng)險。

以上步驟中不太清晰的是配置kubelet的cgroup driver,需要在m節(jié)點創(chuàng)建配置文件kubeadm-config.yaml并在kubeadm初始化時使用,這個文件會被kubeadm傳遞成為所有節(jié)點的/var/lib/kubelet/config.yaml文件,并會保存為kube-systemnamespace下的configmap對象??梢詮腃onfiguring the kubelet cgroup driver文檔獲取最小配置,已經(jīng)修改kubernetesVersion

kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.28.0
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd

使用配置文件的詳細信息可以從Using kubeadm init with a configuration file文檔中看到,如果執(zhí)行命令kubeadm config print init-defaults可以看到輸出中kubernetesVersion的值為1.28.0,雖然當前的實際版本是1.28.5

安裝k8s集群

準備

主要是對網(wǎng)絡(luò)、容器運行時和鏡像的準備。

在本系列第一篇的基礎(chǔ)環(huán)境部分介紹了測試環(huán)境的網(wǎng)絡(luò)架構(gòu),在所有節(jié)點執(zhí)行命令ip route show可以看到指向默認網(wǎng)關(guān)的接口為nat網(wǎng)絡(luò)接口,kubeadm與其他k8s組件一樣使用與默認網(wǎng)關(guān)關(guān)聯(lián)接口的ip作為工作ip,對于這個ip的要求是:

  • 固定的ip,因為它會被自動寫入到很多配置當中去
  • 節(jié)點間能夠通過工作ip互通

網(wǎng)絡(luò)配置文件/etc/netplan/00-installer-config.yaml示例:

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:                    # 僅主機網(wǎng)絡(luò)接口
      addresses:
        - 192.168.56.60/24
    enp0s8:                    # nat網(wǎng)絡(luò)接口
      dhcp4: false             # 靜態(tài)ip
      routes:                  # 默認網(wǎng)關(guān)
        - to: default
          via: 10.0.2.1
      addresses:
        - 10.0.2.51/24
      nameservers:             # dns
        addresses:
          - 8.8.8.8
  version: 2

另外,參考Troubleshooting kubeadm文檔的Pods are not accessible via their Service IP部分可知,對于virtualbox,需要確保命令hostname -i能夠返回一個路由可達的地址,具體的方法是將/etc/hosts文件中與主機名對應(yīng)的127.0.0.1修改為該節(jié)點的工作ip,/etc/hosts部分示例:

127.0.0.1 localhost
10.0.2.51 ubuntu-dev60-k8sm1

執(zhí)行命令kubeadm config images list可以看到kubeadm需要的鏡像,其中pause鏡像為registry.k8s.io/pause:3.9,所以需要執(zhí)行命令sudo vim /etc/containerd/config.toml,修改配置文件中sandbox_image的值與之匹配。在本系列第一篇中已經(jīng)為contianerd配置了對應(yīng)倉庫的mirror,kubeadm初始化時可以直接pull鏡像,不用提前準備,當然也可以預(yù)先在每個節(jié)點執(zhí)行命令sudo kubeadm config images pull拉取鏡像,這樣在初始化的時候能夠更加快速的看到反饋。拉取至本地的鏡像可以執(zhí)行命令sudo crictl images list查看。

初始化控制平面m節(jié)點

在初始化控制平面節(jié)點之前,首先應(yīng)該確定初始化命令的參數(shù),之前已經(jīng)為設(shè)置cgroup dirver準備了一個配置文件,不做高可用的話主要是考慮網(wǎng)絡(luò)插件的訴求,此時所有節(jié)點上未添加cni插件配置,/etc/cni/net.d/目錄為空。

官方在Installing Addons文檔中列出了不完全的網(wǎng)絡(luò)插件列表,流行網(wǎng)絡(luò)插件的對比可以參考rancher的文檔CNI 網(wǎng)絡(luò)插件,這里選擇flannel,從項目主頁可以看到它默認使用10.244.0.0/16作為pod cidr(包含在kube-flannel.yml文件中),插件的cidr必須與kubeadm中ClusterConfiguration中的對應(yīng)設(shè)置保持一致,否則flannel pod無法啟動。一個問題是flannel的默認cidr很容易看到,kubeadm卻不容易(前面提到的打印初始化默認配置看不到),可以參考kubeadm Configuration (v1beta3)文檔,其中的podSubnet配置對應(yīng)kubeadm命令行參數(shù)--pod-network-cidr(文檔中并沒有提到兩項配置的對應(yīng)關(guān)系),可以看到其默認值是10.244.0.0/24,必須使之保持一致的話,修改哪一方都是可以的。還有一個問題,對于kubeadm來說參數(shù)--pod-network-cidr --config無法同時使用,否則會產(chǎn)生錯誤can not mix '--config' with arguments [pod-network-cidr]。這里選擇在kubeadm-config.yaml中添加目前需要的配置,最終的配置內(nèi)容為:

kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.28.0
networking:
  podSubnet: "10.244.0.0/16"
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd

現(xiàn)在,在m節(jié)點執(zhí)行初始化命令:

sudo kubeadm init --config kubeadm-config.yaml

當看到這樣的輸出信息時:

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/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You 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 10.0.3.15:6443 --token b4ci5u.nwpagzl6cq4y035n \
        --discovery-token-ca-cert-hash sha256:cf300f9a479d5988c3d8a655530866d2abb69581812dae1626cad16dd3e381bb 

說明控制面節(jié)點已經(jīng)初始化成功(不能等同于節(jié)點部署成功),接下來按照輸出中提示的命令配置kubectl訪問集群的憑證($HOME/.kube/config),完成后就可以執(zhí)行命令kubectl get pods -A查看pod的狀態(tài)。可以看到coredns pod因為網(wǎng)絡(luò)插件未就緒而處于pending狀態(tài)。接下來執(zhí)行命令安裝網(wǎng)絡(luò)插件flannel,參考Deploying Flannel with kubectl,為避免網(wǎng)絡(luò)緩慢,可以提前準備kube-flannel.yml文件:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

flannel會在/etc/cni/net.d目錄下創(chuàng)建網(wǎng)絡(luò)配置。當看到所有的pod都處于running狀態(tài)后,說明節(jié)點部署成功。

處理初始化失敗

如果初始化過程失敗,參考Clean up文檔reset后再修復(fù)問題重新初始化,文檔中命令假定root用戶,如果用sudo提權(quán),注意執(zhí)行命令sudo sh -c "iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X"清理iptables,還有一些清理行為是包含在kubeadm命令輸出中的,同樣需要注意。

加入工作節(jié)點

現(xiàn)在可以在其他節(jié)點執(zhí)行初始化打印中的join命令加入w節(jié)點了。

其余操作從Managed node labels開始根據(jù)情況自行處理即可,主要關(guān)注的是控制面節(jié)點隔離(禁止工作負載調(diào)度至控制面節(jié)點)。

安裝容器管理工具kuboard

k8s的dashboard有些簡陋,這里安裝一個輕量的管理界面kuboard以簡化對k8s的操作。參考安裝 Kuboard v3 - 內(nèi)建用戶庫,這里不使用docker,而是使用nerdctl(注意修改ip與掛載至容器的本地目錄):

sudo nerdctl run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 80:80/tcp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://192.168.56.60:80" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /home/ian/opt/kuboard/data:/data \
  eipwork/kuboard:v3

體驗istio(二):kubeadm安裝k8s集群,云原生,kubernetes

總結(jié)

雖然k8s的官方文檔很詳盡,但是想要一帆風(fēng)順也不容易。本篇因為沒有使用高可用架構(gòu),相對簡單一些,如果使用高可用,就需要使用一個負載均衡(例如kube-vip)來分發(fā)訪問多個控制面節(jié)點的流量,更進一步的話可以把存儲etcd集群放到外部(參考Options for Highly Available Topology)。

從部署過程可以看出,kubeadm無法自動化眾多的準備工作,如果規(guī)模化使用,需要結(jié)合標準的操作系統(tǒng)鏡像和ansible之類的自動化工具,可以嘗試看看其他部署工具的方案。

k8s做了很多抽象,是一個復(fù)雜度很高的基礎(chǔ)設(shè)施,在下一篇中會直接部署istio的demo應(yīng)用,然后在下下篇中會對k8s相關(guān)的概念做一個整體的介紹,再然后才能談得上體驗istio。對于k8s,建議至少刷一遍官方文檔。文章來源地址http://www.zghlxwxcb.cn/news/detail-817547.html

到了這里,關(guān)于體驗istio(二):kubeadm安裝k8s集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 云原生Kubernetes:Kubeadm部署K8S單Master架構(gòu)

    云原生Kubernetes:Kubeadm部署K8S單Master架構(gòu)

    目錄 一、理論 1.kubeadm 2.Kubeadm部署K8S單Master架構(gòu) 3.環(huán)境部署 4.所有節(jié)點安裝docker 5.所有節(jié)點安裝kubeadm,kubelet和kubectl 6.部署K8S集群 7.安裝dashboard 8.安裝Harbor私有倉庫 9.內(nèi)核參數(shù)優(yōu)化方案 二、實驗 1.Kubeadm部署K8S單Master架構(gòu) 2.?部署流程 ?3.環(huán)境部署 4.所有節(jié)點安裝docker 5.所有節(jié)

    2024年02月10日
    瀏覽(91)
  • Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

    本篇主要針對上篇文章的單 master 節(jié)點的 K8s 集群上搭建多 master 節(jié)點集群 和 LB 負載均衡服務(wù)器。 Kubernetes(K8S)集群搭建基礎(chǔ)入門教程 虛擬機 IP 地址: IP 操作系統(tǒng) 主機名稱 192.168.2.121 centos7.9 k8s-master01 192.168.2.124 centos7.9 k8s-master02 192.168.2.125 centos7.9 k8s-node01 192.168.2.126 centos

    2023年04月26日
    瀏覽(34)
  • Kubernetes技術(shù)--使用kubeadm快速部署一個K8s集群

    Kubernetes技術(shù)--使用kubeadm快速部署一個K8s集群

    這里我們配置一個 單master集群 。( 一個Master節(jié)點,多個Node節(jié)點 ) 1.硬件環(huán)境準備 一臺或多臺機器,操作系統(tǒng) CentOS7.x-86_x64 。這里我們使用安裝了CentOS7的三臺虛擬機 硬件配置 : 2GB或更多RAM , 2個CPU或更多CPU , 硬盤30GB或更多 2.主機名稱和IP地址規(guī)劃 3. 初始化準備工作 (1).關(guān)

    2024年02月10日
    瀏覽(122)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey安裝部署高可用k8s集群(半離線形式)

    云原生|kubernetes|kubernetes集群部署神器kubekey安裝部署高可用k8s集群(半離線形式)

    前面利用kubekey部署了一個簡單的非高可用,etcd單實例的kubernetes集群,經(jīng)過研究,發(fā)現(xiàn)部署過程可以簡化,省去了一部分下載過程(主要是下載kubernetes組件的過程)只是kubernetes版本會固定在1.22.16版本,etcd集群可以部署成生產(chǎn)用的外部集群,并且apiserver等等組件也是高可用,

    2024年02月15日
    瀏覽(28)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    官方文檔: 二進制下載地址 環(huán)境規(guī)劃: pod網(wǎng)段:10.244.0.0/16 service網(wǎng)段:10.10.0.0/16 注意: pod和service網(wǎng)段不可沖突,如果沖突會導(dǎo)致K8S集群安裝失敗。 容器運行時本次使用containerd。 主機名 IP地址 操作系統(tǒng) master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS

    2024年02月10日
    瀏覽(51)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    官方文檔: 二進制下載地址 環(huán)境規(guī)劃: pod網(wǎng)段:10.244.0.0/16 service網(wǎng)段:10.10.0.0/16 注意: pod和service網(wǎng)段不可沖突,如果沖突會導(dǎo)致K8S集群安裝失敗。 主機名 IP地址 操作系統(tǒng) master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、關(guān)閉防火墻 2、配置域名解

    2024年02月08日
    瀏覽(35)
  • 云原生Kubernetes: Kubeadm部署K8S 1.29版本 單Master架構(gòu)

    云原生Kubernetes: Kubeadm部署K8S 1.29版本 單Master架構(gòu)

    目錄 一、實驗 1.環(huán)境 2.K8S master節(jié)點環(huán)境準備 3.K8S master節(jié)點安裝kubelet、kubeadm、kubectl 3.K8S node節(jié)點環(huán)境準備與軟件安裝 4.K8S master節(jié)點部署服務(wù) 5.K8S node節(jié)點部署 6.K8S master節(jié)點查看集群 7.容器網(wǎng)絡(luò)(CNI)部署 8.K8S 集群測試 二、問題 1.calico生成資源報錯 2.為何要安裝docker和ci-d

    2024年02月01日
    瀏覽(98)
  • 一、kubeadm部署Kubernetes(k8s) 1.23.0多主高可用集群

    Kubernetes介紹 kubernetes(k8s)是2015年由Google公司基于Go語言編寫的一款開源的容器集群編排系統(tǒng),用于自動化容器的部署、擴縮容和管理; kubernetes(k8s)是基于Google內(nèi)部的Borg系統(tǒng)的特征開發(fā)的一個版本,集成了Borg系統(tǒng)大部分優(yōu)勢; 官方地址:https://Kubernetes.io 代碼托管平臺:

    2024年03月25日
    瀏覽(38)
  • Kubernetes技術(shù)--使用kubeadm搭建高可用的K8s集群(貼近實際環(huán)境)

    Kubernetes技術(shù)--使用kubeadm搭建高可用的K8s集群(貼近實際環(huán)境)

    1.高可用k8s集群架構(gòu)(多master) 2.安裝硬件要求 一臺或多臺機器,操作系統(tǒng) CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2個CPU或更多CPU,硬盤30GB或更多 注: 這里屬于教學(xué)環(huán)境,所以使用三臺虛擬機模擬實現(xiàn)。 3.部署規(guī)劃 4.部署前準備 (1).關(guān)閉防火墻 (2).關(guān)閉selinux (3).關(guān)閉swap (4).根據(jù)規(guī)

    2024年02月10日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包