<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          雖遲但到,k8s硬核技術(shù),了解下?

          共 9135字,需瀏覽 19分鐘

           ·

          2021-06-27 21:37

          前言

          最近一周,一直在搗鼓基于wsl2搭建k8s集群的問題,試了好久才終于把集群環(huán)境搞好,然后又花了兩天時(shí)間,才搞清楚服務(wù)如何訪問,感覺這應(yīng)該是我工作以來,摸索問題最久的一次了,這兩天更是肝到一點(diǎn)(忙起來,感覺時(shí)間過的好快),這執(zhí)著的精神是值得肯定,但是也說明我確實(shí)對(duì)k8s的認(rèn)知還處在初學(xué)階段,未來可能還有好多坑要踩,不過能走出這第一步,我覺得未來的困難也會(huì)被我踩在腳下的。

          通過昨天晚上和今天集群的創(chuàng)建,我發(fā)現(xiàn)k8s集群創(chuàng)建這塊的經(jīng)驗(yàn)和思路已經(jīng)很成熟了,所以就想趁著這股熱勁,把自己的經(jīng)驗(yàn)分享下,供大家參考,為了搞清楚k8s,連ubuntu我都安裝了好幾個(gè):

          今天我們演示內(nèi)容是基于ubuntu 20.04展開的,內(nèi)容有點(diǎn)多,我們直接開始正文吧。

          正文

          啟用wsl

          關(guān)于wsl的啟用,我們上次(前天)已經(jīng)分享過了,不清楚的小伙伴爬樓看下,后期考慮把這一塊的內(nèi)容再細(xì)化下。暫時(shí)可以參考微軟官方文檔:

          https://docs.microsoft.com/zh-cn/windows/wsl/

          啟用成功后,打開我們的wsl

          后期,我們分享如何美化這里的終端窗口。

          配置系統(tǒng)

          修改系統(tǒng)更新源

          經(jīng)常使用Linux的小伙伴應(yīng)該知道,我們?cè)诎惭b完Linux第一步都是修改更新源。所以wsl安裝完成后,我們首先也是要修改系統(tǒng)更新源的地址,官方默認(rèn)地址國內(nèi)更新比較慢,我們改成阿里巴巴的鏡像地址,就快多了。

          我們要把如下地址添加到/etc/apt/sources.list文件中,并將原來的地址注釋掉:

          deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

          編輯命令我們直接用vim,默認(rèn)已經(jīng)安裝好了:

          sudo vim /etc/apt/sources.list

          這里用sudo是因?yàn)楫?dāng)前用戶不是root賬戶,如果登錄的是root賬戶,就不需要加sudo,不過加了也不影響,下面的命令也是一樣的,后面就不再說明了,#表示注釋該行數(shù)據(jù)。

          修改完鏡像后,我們通過如下命令更新下系統(tǒng):

          sudo apt update & sudo apt upgrade

          前面的命令是更新軟件列表,后面的命令是安裝更新,也可以分開執(zhí)行(感覺我說的好細(xì)呀),然后靜靜等待更新完成:

          daemonize安裝配置

          安裝daemonize是為了讓我們的wsl支持systemctl命令,然后激活Systemd,這些命令在后面啟動(dòng)docker服務(wù)、創(chuàng)建集群的時(shí)候都要用到。

          安裝命令也很簡單(我一直覺得linux安裝軟件比windows方便,一行命令就完成安裝,它不香嗎):

          sudo apt install daemonize #第二種方式執(zhí)行
          sudo apt install -yqq fontconfig daemonize # 第一種方式需要執(zhí)行

          因?yàn)槲乙呀?jīng)安裝過了,顯示得可能和你不一樣:

          這里有兩種方式。需要注意的是第一種方式需要多安裝一個(gè)軟件包:fontconfig

          第一種方式

          第一種方式需要?jiǎng)?chuàng)建一個(gè)腳本,我們直接通過vim創(chuàng)建:

          sudo vim /etc/profile.d/00-wsl2-systemd.sh

          然后將如下內(nèi)容寫入,保存

          # Create the starting script for SystemDvi /etc/profile.d/00-wsl2-systemd.sh
          SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
          if [ -z "$SYSTEMD_PID" ]; then   
            sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target   
            SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
          fi
          if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then 
             exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
          fi

          然后關(guān)閉當(dāng)前Terminal,重新打開。

          第二種方式

          下面是第二種方式,這行命令是為了激活我們的systemd命令

          sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
          注意

          我推薦第一種,第二種雖然第一次是ok的,但是在實(shí)際使用中發(fā)現(xiàn),wsl重啟后(或者電腦重啟),第二種方式執(zhí)行dockerk8s命令的時(shí)候,會(huì)報(bào)下面的錯(cuò),而且我還沒找到解決方案:

          具體情況,各位小伙伴可以自己試驗(yàn)下。

          安裝Docker

          這里安裝的是Linux原生的docker,并非是基于windows環(huán)境的,安裝完成后,你就可以在wsl使用原生的docker

          安裝依賴

          安裝軟件包以允許 apt通過 HTTPS使用存儲(chǔ)庫

          # 安裝 Docker CE
          ## 設(shè)置倉庫
          ### 安裝軟件包以允許 apt 通過 HTTPS 使用存儲(chǔ)庫
          sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

          這里是安裝多個(gè)軟件的方式,上面總共安裝了四個(gè)軟件包,軟件包直接用空格分割。

          添加docker官方發(fā)密鑰
          ### 新增 Docker 的 官方 GPG 秘鑰
          curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
          添加docker鏡像地址
          ### 添加 Docker apt 倉庫
          add-apt-repository \
            "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
            $(lsb_release -cs) \
            stable"

          這里會(huì)把它添加進(jìn)/etc/apt/sources.list文件中。

          安裝docker

          和上面一樣,安裝多個(gè)軟件。

          ## 安裝 Docker CE
          sudo apt-get update && sudo apt-get install containerd.io   docker-ce   docker-ce-cli -y
          配置docker

          這里主要是設(shè)置docker的鏡像倉庫的鏡像地址(有點(diǎn)繞,主要是國內(nèi)下載鏡像慢,所以需要改成網(wǎng)易等國內(nèi)的鏡像地址)

          sudo vim /etc/docker/daemon.json

          前面忘記說了,加sudo就是以管理員運(yùn)行,因?yàn)?code style="overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(255, 100, 65);">/etc文件夾權(quán)限比較高,普通用戶是沒法修改的。然后加入如下內(nèi)容:

          {
            "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/""https://hub-mirror.c.163.com/""https://reg-mirror.qiniu.com"],
            "exec-opts": ["native.cgroupdriver=systemd"],
            "log-driver""json-file",
            "log-opts": {
              "max-size""100m"
            },
            "storage-driver""overlay2"
          }
          啟動(dòng)docker

          如果前面安裝daemonize采用的第一種方式,就通過下面的方式啟動(dòng)docker

          # 啟動(dòng)
          service docker start
          # 重啟
          service docker restart
          # 停止
          service docker stop

          否則下面的命令,如果上面這種方式無法啟動(dòng),也可以通過下面的命令試下(萬一好了呢,病急亂投醫(yī)唄):

          mkdir -p /etc/systemd/system/docker.service.d

          # 重啟 docker.
          systemctl daemon-reload
          # 重啟
          systemctl restart docker
          # 啟動(dòng)
          systemctl start docker

          安裝 kubelet、kubeadm、kubectl

          添加官方 GPG 秘鑰

          這里添加的是阿里巴巴的鏡像密鑰

          sudo apt-get update && sudo apt-get install -y apt-transport-https
          curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

          然后把下面的地址加到我們的軟件更新列表中:

          sudo vim /etc/apt/sources.list.d/kubernetes.list

          第一次打開應(yīng)該是空的,因?yàn)檫@個(gè)文件是我們剛創(chuàng)建的:

          deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

          添加完成后,我們更新下軟件列表數(shù)據(jù):

          sudo apt-get update

          更新完成后,安裝k8s軟件包:

          sudo apt-get install -y kubelet kubeadm kubectl

          因?yàn)槲乙呀?jīng)安裝過了,所以提示已經(jīng)安裝過了,根據(jù)提示信息我們發(fā)現(xiàn)安裝的版本應(yīng)該是1.21.1,應(yīng)該是最新版本了。

          創(chuàng)建k8s集群

          創(chuàng)建集群的方式有多種,目前我了解到的有兩種,一種是用kubeadm,一種是用kind,經(jīng)過多次嘗試,我發(fā)現(xiàn)第一種方式在wsl下始終無法成功,剛開始是不支持swap交換分區(qū),忽略這個(gè)錯(cuò)誤后,又有其他錯(cuò)誤,一直沒跑通,所以本文我們采用后一種,即kind。

          下載安裝kind

          首先,我們要下載kind,直接按照官網(wǎng)給的教程開始:

          # 下載kind
          curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
          # 添加執(zhí)行權(quán)限
          chmod +x ./kind
          # 移動(dòng)到
          sudo mv ./kind /usr/local/kind

          然后kind就安裝完成了,詳細(xì)官方文檔地址如下

          https://kind.sigs.k8s.io/
          創(chuàng)建k8s集群

          k8s的常用命令,今天就不講了,后面梳理下再分享,今天只分享流程。

          到這里,創(chuàng)建集群就很簡單了,直接執(zhí)行下面的命令即可:

          kind create cluster --name wslk8s

          然后就是漫長的等待,如果不出意外,最后會(huì)顯示創(chuàng)建成功:

          我們通過下面的命令看下節(jié)點(diǎn)信息:

          kubectl cluster-info --context kind-wslk8s

          顯示信息如下:

          然后我們?cè)L問如下地址看下

          https://127.0.0.1:45187/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

          雖然顯示結(jié)果有點(diǎn)問題,但是也說明集群創(chuàng)建成功,下面我們安裝k8s控制臺(tái)。

          安裝圖形化控制面板

          執(zhí)行如下命令創(chuàng)建Dashboard節(jié)點(diǎn)

          kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.1/aio/deploy/recommended.yaml

          上面的命令就是根據(jù)yaml構(gòu)建我們的k8s節(jié)點(diǎn)

          然后通過kubectl describe pod -n kubernetes-dashboard查看創(chuàng)建日志:

          如上顯示表明,我們的節(jié)點(diǎn)創(chuàng)建成功,然后運(yùn)行如下命令:

          kubectl proxy

          再訪問如下地址:

          http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/error?namespace=kuboard

          如果是這樣的,表面我們控制面板安裝成功:

          但是真正要訪問,還需要配置個(gè)用戶信息,生成一個(gè)token。

          創(chuàng)建管理用戶配置

          創(chuàng)建yaml文件

          vim adminuser.yaml

          添加文件內(nèi)容,下面內(nèi)容就是我們要?jiǎng)?chuàng)建的節(jié)點(diǎn)信息

          ---
          apiVersion: v1
          kind: ServiceAccount
          metadata:
            name: admin-user
            namespace: kubernetes-dashboard
          ---
          apiVersion: rbac.authorization.k8s.io/v1
          kind: ClusterRoleBinding
          metadata:
            name: admin-user
          roleRef:
            apiGroup: rbac.authorization.k8s.io
            kind: ClusterRole
            name: cluster-admin
          subjects:
          - kind: ServiceAccount
            name: admin-user
            namespace: kubernetes-dashboard

          然后在k8s中創(chuàng)建:

          kubectl apply -f adminuser.yaml

          正常情況下,會(huì)提示創(chuàng)建成功

          然后獲取授權(quán)token

           kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

          下面顯示的就是token信息,直接復(fù)制即可:

          然后我們把token填入頁面,即可訪問:

          然后,我們就可以通過kubernetes-dashboard管理我們的k8s了,可以看日志,管理服務(wù)節(jié)點(diǎn)等,具體各位小伙伴自己摸索吧。

          總結(jié)

          今天的內(nèi)容長度已經(jīng)完全超出我的預(yù)期了,本來想著把主要流程梳理下就可以,但是實(shí)際總結(jié)過程發(fā)現(xiàn),需要注意的點(diǎn)還是挺多的,而且有好多原計(jì)劃的內(nèi)容也沒有加上,后面有時(shí)間梳理下再來分享。

          總的來說,k8s相關(guān)知識(shí)點(diǎn)確實(shí)還是挺多的,除了基礎(chǔ)命令,還有網(wǎng)關(guān)相關(guān)配置,Linux相關(guān)知識(shí)點(diǎn),但只要你掌握了今天的大部分知識(shí)點(diǎn),我相信對(duì)你使用k8s部署應(yīng)用應(yīng)該是有幫助的。好了,今天就到這里吧!

          本文參考內(nèi)容:

          1. https://blog.csdn.net/weixin_32364911/article/details/112238229
          2. https://www.cnblogs.com/xxred/p/13258347.html
          - END -


          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产亚洲精品久久久 | 亚洲va在线观看 亚洲艾薇在线观看 | 19p内射 | 激情在线小视频 | 我去也最新无码 |