<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • 如果您正在尋找 devOps 工作,那么您正在做出良好的職業決策,因為它現在是高薪且需求量很大的工作。在本文中,我們將介紹您可能期望面試官提出的
    DevOps 面試問題。問題很多,我們不可能一一列出,但是閱讀本文后,您應該對等待您的問題以及您應該準備的內容有更好的了解。

    基本問題

    1)?開發運維!你怎么能用你的話來定義它?

    它在軟件開發人員和 IT 運營/網絡運營工程師之間進行高效的日常協作,以生成工作系統或發布軟件。

    devOps 實施通常與敏捷方法保持一致,其中將工作軟件部署到生產通常是最高優先級。在敏捷實施中,重點是人而不是流程,因此 DevOps
    工程師必須愿意與敏捷開發團隊密切合作,以確保他們擁有支持自動化測試、持續集成和持續交付等功能所需的環境。在沒有 DevOps
    的傳統實施中,運營團隊通常與開發人員隔離,通常在系統運營團隊將開發人員視為客戶的一般服務水平協議下的幫助臺模型下工作。這是一個經過驗證的模型,顯然可以很好地工作,但在
    DevOps 環境中,

    2)?為什么我們需要 DevOps ?

    公司現在面臨著交付更多、更快和更好的應用程序的需求,以滿足有意識的用戶日益緊迫的需求,以縮短“上市時間”。Devops 通常有助于快速部署。

    3)?什么是敏捷開發和 Scrum?

    敏捷開發用作瀑布式開發實踐的替代方案。在敏捷中,開發過程更加迭代和增量,在開發的每個階段都有更多的測試和反饋,而不是瀑布的最后一個階段。

    Scrum 用于使用迭代和增量實踐來管理復雜的軟件和產品開發。Scrum 具有三個角色,即產品負責人、Scrum Master 和團隊。

    4)?我們可以將 DevOps 視為一種敏捷方法嗎?

    當然!DevOps 是一種通過一系列良好實踐協調和同步開發和生產開始的運動。它的出現是由業務需求的深刻變化推動的,他們希望加快變化以更貼近業務和客戶的需求。

    5)??DevOps 工程師在敏捷開發方面的職責是什么?

    DevOps 工程師與敏捷開發團隊密切合作,以確保他們擁有支持自動化測試、持續集成和持續交付等功能所需的環境。DevOps
    工程師必須與開發人員保持持續聯系,并使環境的所有必需部分無縫工作。

    技術問題

    6)?什么是容器??

    容器是輕量級虛擬化的一種形式,比 chroot 重,但比虛擬機管理程序輕。它們在使用與主機相同的內核時提供進程之間的隔離,并在內核中提供 cgroups
    功能。但容器格式之間存在差異,有些格式提供更多類似 VM 的體驗,而另一些則僅將應用程序容器化。

    LXC 容器最像虛擬機,重量最重,而 Docker 過去重量更輕,最初是為單個應用程序容器設計的。但在最近的版本中,Docker
    引入了整機容器化功能,因此現在 Docker 可以雙向使用。還有來自 CoreOS 的 rkt 和來自 Canonical 的 LXD,它建立在 LXC 之上。

    7)?什么是 Kubernetes?解釋

    它是由 Google
    制造的用于管理容器的大規模可擴展工具。它在內部用于大型部署,因此它可能是容器生產使用的最佳選擇。它通過重述非響應式容器來支持自我修復,它以占用更少資源的方式打包容器并具有許多其他出色的功能。

    8)??CI(持續集成)服務器的功能是什么??

    CI
    服務器功能是持續集成不同開發人員所做的所有更改并提交到存儲庫并檢查編譯錯誤。它需要每天多次構建代碼,最好是在每次提交之后,這樣它就可以檢測到哪個提交造成了破壞,如果發生破壞。

    注意:其他可用和流行的 CI 工具是 Jenkins、TeamCity、CircleCI、Hudson、Buildbot 等

    9)?什么是持續交付?

    它是在 CI(持續集成)服務器構建后立即交付用于測試的軟件的做法嗎?它需要大量使用版本控制系統,以便開發人員和測試人員始終可以使用。

    10)什么是 Vagrant,它的用途是什么?

    Vagrant 是一種可以創建和管理用于測試和開發軟件的虛擬化(或容器化)環境的工具。起初,Vagrant 使用 virtualbox
    作為虛擬環境的管理程序,但現在它也支持 KVM。

    11)?你曾經使用過任何腳本語言嗎??

    就腳本語言而言,越簡單越好。事實上,語言本身并不像理解設計模式和開發范例(如過程式、面向對象或函數式編程)那么重要。

    目前,有幾種腳本語言可用,因此出現了一個問題:最適合 DevOps 方法的語言是什么?簡單來說,這取決于項目的上下文和所使用的工具,例如 Ansible
    是否使用了其在 Python 方面的良好知識,以及它是否適用于 Chef 是否使用 Ruby。

    12)?配置管理工具在 devops 中的作用是什么?

    自動化在服務器配置管理中起著至關重要的作用。為此,我們使用 CM 工具,它們存儲有關軟件和測試件的版本和構建的信息,并提供軟件和測試件之間的可追溯性。

    13)??CM 工具的用途是什么?您使用的是哪一種?

    配置管理工具的目的是在大量服務器上自動部署和配置軟件。大多數 CM
    工具通常使用代理架構,這意味著每臺被管理的機器都需要安裝代理。我最喜歡的工具是使用無代理架構的工具——Ansible。它只需要 SSH 和
    Python。如果使用原始模塊,甚至不需要 Python,因為它可以運行原始 bash 命令。其他可用和流行的 CM 工具是
    Puppet、Chef、SaltStack。

    14)?什么是 OpenStack?

    OpenStack 通常被稱為云操作系統,這與事實相差不遠。它是部署 IaaS 的完整環境,讓您可以創建類似于 AWS
    的自己的云。它是高度模塊化的,由許多子項目組成,因此您可以選擇所需的功能。OpenStack 發行版可從 Red
    Hat、Mirantis、HPE、Oracle、Canonical 和許多其他公司獲得。它是完全開源的項目,但一些供應商制作了專有發行版。

    15)?對云平臺進行分類?

    云計算軟件可分為軟件即服務或 SaaS、基礎設施即服務或 IaaS 和平臺即服務或 PaaS。

    SaaS 是在遠程服務器上通過網絡運行的軟件,只有用戶界面暴露給用戶,通常在 Web 瀏覽器中。例如 salesforce.com。

    基礎設施即服務是一種云環境,它將 VM 公開給用戶以用作整個操作系統或容器,您可以在其中安裝任何您想在服務器上安裝的東西。例如
    OpenStack、AWS、Eucalyptus。
    PaaS 允許用戶在預安裝的平臺上部署自己的應用程序,通常是應用程序服務器框架和開發人員工具套件。這方面的例子是 OpenShHeroku。

    16)?構建小型云的最簡單方法是什么?

    VMfest 是立即從 VirtualBox 虛擬機創建 IaaS 云的選項之一。如果你想要一個輕量級的 PaaS,可以使用 Dokku,它基本上是一個
    bash 腳本,它使 PaaS 脫離了 Dokku 容器。

    17)?什么是 AWS(亞馬遜網絡服務)?有機會在亞馬遜工具上工作嗎?

    AWS 提供了一套靈活的服務,旨在使公司能夠使用 AWS 和 DevOps
    實踐以更快的速度和可靠性創建和交付產品。這些服務簡化了調試和基礎設施管理、應用程序代碼部署、自動化軟件發布過程以及應用程序和基礎設施性能的監控。Amazon
    使用了 AWS CodeCommit、AWS CodeDeploy、AWS CodePipeline 等工具,這些工具有助于簡化開發運營。

    18)?什么是 EC2?

    Amazon EC2 Container Service (ECS) 是一種高度可擴展的容器管理服務和高性能,它支持 Docker 容器并允許您在由
    Amazon EC2 實例管理的集群上輕松運行應用程序。

    EC2服務離不開Amazon Machine Image-AMI的概念。May 確實是一個將被執行的虛擬機的形象。EC2 基于 XEN
    虛擬化,這就是為什么將 XEN 服務器遷移到 EC2 非常容易的原因。

    19)?你發現使用 NoSQL 數據庫優于 RDBMS 有什么優勢嗎?

    典型的 Web 應用程序是使用三層架構構建的。為了承載負載,只需在負載平衡器后面添加更多 Web
    服務器以支持更多用戶。橫向擴展的能力是云計算領域的一個關鍵原則,在其中可以輕松添加或刪除 VM 實例以滿足需求變得越來越重要。

    但是,在數據層方面,關系數據庫(RDBMS)不允許通向簡單的規模,也沒有提供靈活的數據模型。管理更多用戶意味著添加更多服務器,大型服務器非常復雜,擁有者和成本高得不成比例,這與低成本硬件、“商品硬件”、云中的架構形成鮮明對比。組織開始發現現有或新應用程序的關系數據庫存在性能問題。尤其是隨著用戶數量的增加,他們意識到需要更快、更靈活的基礎。現在是開始評估和采用
    NoSQL 數據庫的時候了,就像在他們的 Web 應用程序中一樣。

    20)??NoSQL 的主要 SQL 遷移困難是什么?

    根據模式在關系數據庫中的每條記錄 -
    具有固定數量的字段(列),每個字段(列)具有指定的對象和數據類型。每條記錄都是一樣的。數據在幾個表中進行了非規范化。優點是數據庫中的重復數據較少。缺點是模式中的更改意味著執行多個“更改表”,這需要昂貴的同時鎖定多個表以確保更改不會使數據庫處于不一致狀態。

    另一方面,對于數據庫數據,每個文檔都可以具有與其他文檔完全不同的結構。不需要對數據庫進行額外的管理來管理方案中的更改。

    21)??NoSQL 數據庫文檔有什么好處?

    文檔數據庫的主要優點如下:

    * 靈活的數據模型數據可以在沒有定義模式的情況下插入,插入的數據格式可以隨時更改,提供極大的靈活性,最終為業務帶來顯著的敏捷性。
    * 一致、高性能的高級 NoSQL 數據庫技術正在將緩存數據透明地放入系統內存中;對開發人員和負責運營的團隊完全透明的行為。
    * 一些易于擴展的 NoSQL 數據庫自動在服務器之間傳播數據,不需要應用程序參與。可以在不中斷應用程序的情況下添加和刪除服務器,數據和 I/O
    分布在多個服務器上。
    22)??Git 相對于 CVS 的主要優勢是什么?

    最大的優勢是 Git 是分布式的,而 CVS 是中心化的。CVS 中的更改是針對每個文件的,而 Git 中的更改(提交)總是指整個項目。Git 提供的工具比
    CVS 多得多。

    23)?容器和虛擬機之間的區別?

    每個 VM 實例化都需要啟動一個完整的操作系統。虛擬機占用大量系統資源。這很快就會增加大量的 RAM 和 CPU 周期。容器主機使用 linux
    內核的進程和文件系統隔離特性。

    24)? 什么是CoreOS,有什么替代品?

    CoreOS 是用于運行容器的精簡 Linux 發行版,主要具有自己的 rkt 格式,但也支持其他格式。它最初基于 ChromeOS 并支持
    Docker。替代方案是 canonical 的 ubuntu snappy 或 red hat 企業 linux atomic
    主機。當然,Containers 也可以運行在常規的 Linux 系統上。

    25)? 什么是 Kickstart?

    這是一種通過自動方式安裝基于 Red Hat 的系統的方法。在手動安裝過程中,Anaconda 安裝程序會創建文件
    anaconda-ks.cfg,然后可以使用 system-config-kickstart 工具在多個系統上自動安裝相同的配置。

    26)?什么是網絡監控工具?列舉幾個

    例如,Nagios、Icinga 2、OpenNMS、Splunk 和
    Wireshark。這些工具用于監控網絡流量、網絡質量并在網絡問題出現之前檢測它們。在列出的那些中,只有 Splunk 是專有的,其他是開源的。

    27)??Juju 是什么?

    Juju 是主要用于 ubuntu 的編排工具,用于在 Ubuntu 系統上進行管理、配置和配置。它最初是用 Python 編寫的,后來用 Go 重寫了。

    28)?給我一個你將如何處理項目的例子?

    作為一名 DevOps 工程師,我將展示對 DevOps
    項目管理策略的清晰理解,并與團隊合作設定目標、簡化工作流程、維護范圍、研究和引入新工具或框架、將需求轉化為工作流程并跟進。我會求助于
    CI、發布管理和其他工具來保持跨學科項目的正常進行。

    29)?什么是尸檢會議?

    這是一個會議,我們討論出了什么問題以及應該采取哪些步驟,以使失敗不再發生。事后分析會議不是要找出應該受到指責的人,而是要防止再次發生中斷并計劃重新設計基礎設施,以便最大限度地減少停機時間。這是關于從錯誤中學習。

    30)你對無服務器模型了解多少?

    無服務器是指對開發人員隱藏服務器存在的模型。這意味著您不再需要處理容量、部署、擴展和容錯以及操作系統。它將從根本上減少維護工作,并允許開發人員快速專注于開發代碼。

    示例是 Amazon AWS Lambda 和 Auth0 無服務平臺。

    Devops 示例:使用 Ansible 部署應用程序

    Ansible 是一個輕量級、可擴展的解決方案,用于自動化您的應用程序配置。Ansible 除了 Python 和 SSH
    之外沒有其他依賴項。它不需要在遠程主機上設置任何代理,運行后也不會留下任何痕跡。它允許您通過創建簡單的基于 YAML
    的劇本來顯著簡化我們的操作。它有利于配置自動化、部署和編排。

    Ansible 的組件

    Playbooks:?Ansible playbooks
    是一種以腳本方式向遠程計算機發送命令的方法。您可以通過將腳本傳遞給一個或多個系統來配置整個復雜環境,而不是單獨使用 Ansible 命令從命令行遠程配置計算機。

    Ansible playbook 以 YAML
    數據序列化格式編寫。如果您不知道什么是數據序列化格式,請將其視為一種將編程數據結構(列表、數組、字典等)轉換為可以輕松存儲到磁盤的格式的方法。然后可以使用該文件在以后重新創建結構。JSON
    是另一種流行的數據序列化格式,但 YAML 更容易閱讀。

    讓我們看一個允許我們在多個主機中安裝 Web 應用程序 (nginx) 的基本劇本:

    hosts: webservers

    tasks:

    - name: Installs nginx web server

    apt: pkg=nginx state=installed update_cache=true

    notify:

    - start nginx

    ?

    handlers:

    - name: start nginx

    service: name=nginx state=started

    hosts 文件:(默認在 /etc/ansible/hosts 下)這是 Ansible Inventory
    文件,它存儲主機及其到主機組(網絡服務器、數據庫等)的映射

    [webservers]

    10.0.15.22

    # example of setting a host inventory by IP address.

    # also demonstrates how to set per-host variables.

    [repository_servers]

    example-repository #通過主機名設置主機的示例。需要在 /etc/hosts # 或 DNS 中進行本地查找。

    [數據庫服務器]

    db01

    SSH 密鑰:對于第一次運行,我們需要告訴 ansible SSH 和 Sudo 密碼,因為常見的角色之一是配置無密碼 sudo,并部署 SSH
    密鑰。因此在這種情況下,ansible 可以在遠程節點(主機)中執行 playbook 的命令并部署 Web 應用程序 nginx。

    結論

    這些是你在面試中可能會遇到的一些問題,但是在學習 DevOps 概念時,你絕不應該只專注于那些閱讀所有與 Linux
    和開源相關的東西,并嘗試任何對你有用的軟件。感謝您的閱讀。

    ?

    ?

    技術
    今日推薦
    閱讀數 487
    閱讀數 81
    閱讀數 32
    閱讀數 28
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频