1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Docker 和 K8s 到底啥關(guān)系?想學(xué) K8s,必須得先學(xué) Docker 嗎?

        共 3722字,需瀏覽 8分鐘

         ·

        2022-07-11 12:44

        想學(xué)K8s,必須得先學(xué)會(huì) Docker 嗎?這是很多網(wǎng)友在開始琢磨著想要學(xué) K8s 的時(shí)候都會(huì)冒出來的想法。那么今天我們就跟大家說說這個(gè)話題,要回答這個(gè)問題,我們需要先搞清楚 Docker 和 K8s 他們的角色是什么,相互之間是什么關(guān)系。

        K8s 和 Docker 的關(guān)系

        Docker 和 K8s 這兩個(gè)經(jīng)常一起出現(xiàn),兩者的Logo 看著也有一定聯(lián)系一個(gè)是背上馱著集裝箱的鯨魚一個(gè)是船的舵輪。

        kubernetes and docker

        不過兩者不能放在一個(gè)維度上討論,Docker 是當(dāng)前流行的 Linux 容器解決方案,利用 Namespaces 、Cgroups 以及聯(lián)合文件系統(tǒng)UnionFS 實(shí)現(xiàn)了同一主機(jī)上容器進(jìn)程間的相互隔離。

        容器的原理
        • NameSpaces:隔離進(jìn)程,讓進(jìn)程只能訪問到本命名空間里的掛載目錄、PID、NetWork 等資源
        • Cgroups: 限制進(jìn)程能使用的計(jì)算機(jī)系統(tǒng)各項(xiàng)資源的上限,包括 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬等等
        • 聯(lián)合文件系統(tǒng)UnionFS : 保存一個(gè)操作系統(tǒng)的所有文件和目錄,在它基礎(chǔ)之上添加應(yīng)用運(yùn)行依賴的文件。創(chuàng)建容器進(jìn)程的時(shí)候給進(jìn)程指定Mount Namespace 把鏡像文件掛載到容器里,用 chroot 把進(jìn)程的 Root目錄切換到掛載的目錄里,從而讓容器進(jìn)程各自擁有獨(dú)立的操作系統(tǒng)目錄。

        而 K8s 是擁有容器編排能力的集群管理解決方案,可以按照應(yīng)用的定義調(diào)度各個(gè)運(yùn)行著應(yīng)用組件 Docker 容器,但是 Docker 并不是 K8s 對容器的唯一選擇,K8s 的 容器運(yùn)行時(shí)支持對接多種容器 ,比如CoreOS公司的Rkt容器(之前稱為Rocket,現(xiàn)更名為Rkt),Apache 開源的 Mesos 容器等。只要容器實(shí)現(xiàn)了 K8s 容器運(yùn)行時(shí)的接口約定,都能讓 K8s 進(jìn)行調(diào)度。

        紅框里的容器運(yùn)行時(shí)負(fù)責(zé)對接具體的容器實(shí)現(xiàn)

        Docker 公司也推出過自己的容器集群管理方案 Docker Swarm ,跟 K8s 算是競品,但是在生產(chǎn)上幾乎沒人使用。

        Docker Swarm 沒有流行起來的深層次的原因就不深究了,從一些IT媒體的報(bào)道看,可能的原因是

        • 跟 Docker 深度綁定,人天生對集權(quán)主義非常反感。

        • Docker 公司在大規(guī)模集群管理上的經(jīng)驗(yàn)不足,不像谷歌那樣能高屋建瓴地給出好的解決方法。

        容器用 Docker,需要學(xué)到什么程度

        看完 K8s 和 Docker 的關(guān)系后,我們已經(jīng)有答案了,想學(xué) K8s 不一定非得會(huì) Docker。但是畢竟 Docker 還是目前最流行的 Linux 容器方案,絕大部分情況下我們還是會(huì)選擇使用 Docker,那么我們 Docker 掌握到什么程度更易于我們學(xué)習(xí) K8s 呢?

        這個(gè)主要看我們想學(xué)會(huì) K8s 干什么,即使運(yùn)行在 K8s 之上的容器選擇 Docker,如果我們是搭建一些基建類的軟件,比如 MySQL、Redis之類的,因?yàn)檫@些組織已經(jīng)提供了軟件容器的鏡像,我的使用體驗(yàn)是,完全用不到那些 Docker 的各種命令。

        比如要在 K8s 集群上運(yùn)行一個(gè) MySQL 應(yīng)用,寫好應(yīng)用的清單文件(就是各種配置和期望的狀態(tài)),然后直接運(yùn)行

        kubectl apply -f mysql.yaml 就好,K8s 的容器運(yùn)行時(shí)會(huì)根據(jù)清單文件里的鏡像名,幫我們調(diào) Docker 的接口去下載鏡像、運(yùn)行容器。

        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: mysql
        spec:
          selector:
            matchLabels:
              app: mysql
          strategy:
            type: Recreate
          template:
            metadata:
              labels:
                app: mysql
            spec:
              containers:
                - image: mysql:5.7
                  name: mysql
                  env:
                    - name: MYSQL_ROOT_PASSWORD
                      value: superpass
                  ports:
                    - containerPort: 3306
                      name: mysql
                  volumeMounts:
                    - name: mysql-persistent-storage
                      mountPath: /var/lib/mysql
                    - name: mysql-config
                      mountPath: /etc/mysql/conf.d/my.cnf
                      subPath: my.cnf

        上面配置文件,有刪減。完整可運(yùn)行的案例,請參考:

        不過,我們使用 K8s 除了搭建這種基礎(chǔ)軟件外,學(xué) K8s 更多是讓自己開發(fā)的服務(wù)能運(yùn)行在 K8s 集群上,依托 K8s 集群管理、調(diào)度的能力讓服務(wù)變得更具魯性、更portable。

        這個(gè)時(shí)候 Docker 方面的技能就需要掌握基本的 Dockerfile 編寫、打包上傳鏡像的命令。這部分的幾個(gè)簡單的知識(shí),感覺花個(gè)兩小時(shí)就能掌握,這里推薦一下我以前的文章

        學(xué)會(huì)這幾個(gè)簡單的 Docker 知識(shí)就能支撐我們開始 K8s 的學(xué)習(xí)和練習(xí)啦,其他 Docker 相關(guān)的知識(shí)完全可以在做 K8s 練習(xí)時(shí)遇到問題、解決問題的過程中再學(xué)。

        總結(jié)

        這篇文章把 Docker 和 K8s 的關(guān)系給大家做了一個(gè)解答,希望還在遲疑自己現(xiàn)有的知識(shí)儲(chǔ)備能不能直接學(xué) K8s 的,趕緊行動(dòng)起來,K8s 是典型的入門有點(diǎn)難,后面越用越香。

        - END -


        覺得有用就點(diǎn)個(gè)在看  ??????


        瀏覽 68
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产无码免费视频 | 五月婷婷深爱激情综合网 | 好爽好大视频 | 精品乱子伦一区二区三区 | 老骚逼视频 | 国产精品嫩草影院88av漫画 | 日韩精品黄片 | 好大好想要好爽好深 | 积积桶肤肤免费软件大全2025 | 美女露逼图片 |