主頁 > 作業系統 > 029.Kubernetes核心組件-Controller Manager

029.Kubernetes核心組件-Controller Manager

2020-09-25 11:47:05 作業系統

一 Controller Manager原理

1.1 Controller Manager概述

一般來說,智能系統和自動系統通常會通過一個“控制系統”來不斷修正系統的作業狀態,在Kubernetes集群中,每個Controller都是這樣的一個“控制系統”,它們通過API Server提供的(List-Watch)介面實時監控集群中特定資源的狀態變化,當發生各種故障導致某資源物件的狀態發生變化時,Controller會嘗試將其狀態調整為期望的狀態, 比如當某個Node意外宕機時,Node Controller會及時發現此故障并執行自動化修復流程,確保集群始終處于預期的作業狀態,Controller Manager是Kubernetes中各種Controller的管理者,是集群內部的管理控制中心,也是Kubernetes自動化功能的核心, Controller Manager內部包含Replication Controller、Node Controller、ResourceQuota Controller、Namespace Controller、ServiceAccount Controller、Token Controller、Service Controller及Endpoint Controller這8種Controller,每種Controller都負責一種特定資源的控制流程,而Controller Manager正是這些Controller的核心管理者, 提示:ServiceAccount Controller與Token Controller是與安全相關的兩個控制器,并且與ServiceAccount、Token密切相關, clipboard 提示:在Kubernetes集群中與Controller Manager協調的另一個組件是Kubernetes Scheduler,它的作用是將待調度的Pod(包括通過API Server新創建的Pod及RC為補足副本而創建的Pod等)通過一些復雜的調度流程計算出最佳目標節點,然后系結到該節點上,

二 Replication Controller

2.1 Replication Controller(副本控制器)作用

Replication Controller的核心作用是確保在任何時候集群中某個RC關聯的Pod副本數量都保持預設值,如果發現Pod的副本數量超過預期值,則Replication Controller會銷毀一些Pod副本;反之,Replication Controller會自動創建新的Pod副本,直到符合條件的Pod副本數量達到預設值, 注意:只有當Pod的重啟策略是Always時(RestartPolicy=Always),Replication Controller才會管理該Pod的操作(例如創建、銷毀、重啟等), 在通常情況下,Pod物件被成功創建后不會消失,唯一的例外是當Pod處于succeeded或failed狀態的時間過長(超時引數由系統設定)時,該Pod會被系統自動回收,管理該Pod的副本控制器將在其他作業節點上重新創建、運行該Pod副本, RC中的Pod模板就像一個模具,模具制作出來的東西一旦離開模具,它們之間就再也沒關系了,同樣,一旦Pod被創建完畢,無論模板如何變化,甚至換成一個新的模板,也不會影響到已經創建的Pod了, 此外,Pod可以通過修改它的標簽來脫離RC的管控,該方法可以用于將Pod從集群中遷移、資料修復等除錯, 對于被遷移走的Pod,RC會自動創建一個新的副本替換被遷移的副本, 注意:洗掉一個RC不會影響它所創建的Pod, 如果想洗掉一個被RC所控制的Pod,則需要將該RC的副本數(Replicas)屬性設定為0,這樣所有的Pod副本就都會被自動洗掉, 提示:建議不要越過RC直接創建Pod,因為Replication Controller會通過RC管理Pod副本,實作自動創建、補足、替換、洗掉Pod副本,這樣能提高系統的容災能力,減少由于節點崩潰等意外狀況造成的損失,即使應用程式只用到一個Pod副本,也強烈建議使用RC來定義Pod, Replication Controller的作用總結如下:
  • 確保在當前集群中有且僅有N個Pod實體,N是在RC中定義的Pod副本數量,
  • 通過調整RC的spec.replicas屬性值來實作系統擴容或者縮容,
  • 通過改變RC中的Pod模板(主要是鏡像版本)來實作系統的滾動升級,

2.2 Replication Controller(副本控制器)場景

Replication Controller的典型使用場景通常有如下幾種:
  1. 重新調度(Rescheduling):不管想運行1個副本還是1000個副本,副本控制器都能確保指定數量的副本存在于集群中,即使發生節點故障或Pod副本被終止運行等意外狀況,
  2. 彈性伸縮(Scaling):手動或者通過自動擴容代理修改副本控制器的spec.replicas屬性值,非常容易實作增加或減少副本的數量,
  3. 滾動更新(RollingUpdates):副本控制器被設計成通過逐個替換Pod的方式來輔助服務的滾動更新,推薦的方式是創建一個只有一個副本的新RC,若新RC副本數量加1,則舊RC的副本數量減1,直到這個舊RC的副本數量為0,然后洗掉該舊RC,通過上述模式,即使在滾動更新的程序中發生了不可預料的錯誤,Pod集合的更新也都在可控范圍內,在理想情況下,滾動更新控制器需要將準備就緒的應用考慮在內,并保證在集群中任何時刻都有足夠數量的可用Pod,

三 Node Controller

3.1 Node Controller作用

kubelet行程在啟動時通過API Server注冊自身的節點資訊,并定時向API Server匯報狀態資訊,API Server在接收到這些資訊后,會將這些資訊更新到etcd中,在etcd中存盤的節點資訊包括節點健康狀況、節點資源、節點名稱、節點地址資訊、作業系統版本、Docker版本、kubelet版本等, 節點健康狀況包含“就緒”(True)“未就緒”(False)和“未知”(Unknown)三種,

3.2 Node Controller作業流程

Node Controller通過API Server實時獲取Node的相關資訊,實作管理和監控集群中的各個Node的相關控制功能, clipboard Node Controller的核心作業流程:
  1. ControllerM anager在啟動時如果設定了--cluster-cidr引數,那么為每個沒有設定Spec.PodCIDR的Node都生成一個CIDR地址,并用該CIDR地址設定節點的Spec.PodCIDR屬性,這樣做的目的是防止不同節點的CIDR地址發生沖突,
  2. 逐個讀取Node資訊,多次嘗試修改nodeStatusMap中的節點狀態資訊,將該節點資訊和Node Controller的nodeStatusMap中保存的節點資訊做比較,如果判斷出沒有收到kubelet發送的節點資訊、第1次收到節點kubelet發送的節點資訊,或在該處理程序中節點狀態變成非“健康”狀態,則在nodeStatusMap中保存該節點的狀態資訊,并用Node Controller所在節點的系統時間作為探測時間和節點狀態變化時間,如果判斷出在指定時間內收到新的節點資訊,且節點狀態發生變化,則在nodeStatusMap中保存該節點的狀態資訊,并用Node Controller所在節點的系統時間作為探測時間和節點狀態變化時間,如果判斷出在指定時間內收到新的節點資訊,但節點狀態沒發生變化,則在nodeStatusMap中保存該節點的狀態資訊,并用Node Controller所在節點的系統時間作為探測時間,將上次節點資訊中的節點狀態變化時間作為該節點的狀態變化時間,如果判斷出在某段時間(gracePeriod)內沒有收到節點狀態資訊,則設定節點狀態為“未知”,并且通過API Server保存節點狀態,
  3. 逐個讀取節點資訊,如果節點狀態變為非“就緒”狀態,則將節點加入待洗掉佇列,否則將節點從該佇列中洗掉,如果節點狀態為非“就緒”狀態,且系統指定了CloudProvider,則Node Controller呼叫CloudProvider查看節點,若發現節點故障,則洗掉etcd中的節點資訊,并洗掉和該節點相關的Pod等資源的資訊,

四 ResourceQuota Controller

4.1 ResourceQuota Controller作用

ResourceQuota Controller,即資源配額管理,資源配額管理確保了指定的資源物件在任何時候都不會超量占用系統物理資源,避免了由于某些業務行程的設計或實作的缺陷導致整個系統運行紊亂甚至意外宕機,對整個集群的平穩運行和穩定性有非常重要的作用, 目前Kubernetes支持如下三個層次的資源配額管理,
  • 容器級別,可以對CPU和Memory進行限制,
  • Pod級別,可以對一個Pod內所有容器的可用資源進行限制,
  • Namespace級別,為Namespace(多租戶)級別的資源限制,包括:
    • Pod數量;
    • Replication Controller數量;
    • Service數量;
    • ResourceQuota數量;
    • Secret數量;
    • 可持有的PV數量,
Kubernetes的配額管理是通過Admission Control(準入控制)來控制的,Admission Control當前提供了兩種方式的配額約束,分別是LimitRanger與ResourceQuota, 其中LimitRanger作用于Pod和Container,ResourceQuota則作用于Namespace,限定一個Namespace里的各類資源的使用總額,

4.2 ResourceQuota Controller作業流程

clipboard 如圖所示,如果在Pod定義中同時宣告了LimitRanger,則用戶通過API Server請求創建或修改資源時,Admission Control會計算當前配額的使用情況,如果不符合配額約束,則創建物件失敗, 對于定義了ResourceQuota的Namespace,ResourceQuota Controller組件則負責定期統計和生成該Namespace下的各類物件的資源使用總量,統計結果包括Pod、Service、RC、Secret和PersistentVolume等物件實體個數,以及該Namespace下所有Container實體所使用的資源量(目前包括CPU和記憶體),然后將這些統計結果寫入etcd的resourceQuotaStatusStorage目錄(resourceQuotas/status)下,寫入resourceQuotaStatusStorage的內容包含Resource名稱、配額值(ResourceQuota物件中spec.hard域下包含的資源的值)、當前使用值(ResourceQuota Controller統計出來的值),隨后這些統計資訊被Admission Control使用,以確保相關Namespace下的資源配額總量不會超過ResourceQuota中的限定值,

五 Namespace Controller

5.1 Namespace Controller作用

用戶通過API Server可以創建新的Namespace并將其保存在etcd中,Namespace Controller定時通過API Server讀取這些Namespace的資訊,如果Namespace被API標識為優雅洗掉(通過設定洗掉期限實作,即設定DeletionTimestamp屬性),則將該NameSpace的狀態設定成Terminating并保存到etcd中,同時Namespace Controller洗掉該Namespace下的ServiceAccount、RC、Pod、Secret、PersistentVolume、ListRange、ResourceQuota和Event等資源物件, 在Namespace的狀態被設定成Terminating后,由Admission Controller的NamespaceLifecycle插件來阻止為該Namespace創建新的資源,同時,在Namespace Controller洗掉該Namespace中的所有資源物件后,Namespace Controller對該Namespace執行finalize操作,洗掉Namespace的spec.finalizers域中的資訊,如果Namespace Controller觀察到Namespace設定了洗掉期限,同時Namespace的spec.finalizers域值是空的,那么Namespace Controller將通過API Server洗掉該Namespace資源,

六 Service Controller與Endpoints Controller

6.1 Service Controller與Endpoints Controller作用

如下所示為Service、Endpoints與Pod的關系, clipboard Endpoints表示一個Service對應的所有Pod副本的訪問地址,Endpoints Controller就是負責生成和維護所有Endpoints物件的控制器, Endpoints Controller負責監聽Service和對應的Pod副本的變化,如果監測到Service被洗掉,則洗掉和該Service同名的Endpoints物件,如果監測到新的Service被創建或者修改,則根據該Service資訊獲得相關的Pod串列,然后創建或者更新Service對應的Endpoints物件,如果監測到Pod的事件,則更新它所對應的Service的Endpoints物件(增加、洗掉或者修改對應的Endpoint條目), 每個Node的kube-proxy行程會使用Endpoints物件,kube-proxy行程獲取每個Service的Endpoints,實作了Service的負載均衡功能, 因此Service Controller的作用,它其實是屬于Kubernetes集群與外部的云平臺之間的一個介面控制器,Service Controller監聽Service的變化,如果該Service是一個LoadBalancer型別的Service(externalLoadBalancers=true),則Service Controller確保在外部的云平臺上該Service對應的LoadBalancer實體被相應地創建、洗掉及更新路由轉發表(根據Endpoints的條目),

七 Admission Control

7.1 Admission Control概述

Admission Control配備了一個準入控制器的插件串列,發送給API Server的任何請求都需要通過串列中每個準入控制器的檢查,檢查不通過,則API Server拒絕此呼叫請求,此外,準入控制器插件能夠修改請求引數以完成一些自動化任務,比如ServiceAccount這個控制器插件,

7.2 可配置創建串列

當前可配置的準入控制器插件如下,
  • AlwaysAdmit:已棄用,允許所有請求,
  • AlwaysPullImages:在啟動容器之前總是嘗試重新下載鏡像,這對于多租戶共享一個集群的場景非常有用,系統在啟動容器之前可以保證總是使用租戶的密鑰去下載鏡像,如果不設定這個控制器,則在Node上下載的鏡像的安全性將被削弱,只要知道該鏡像的名稱,任何人便都可以使用它們了,
  • AlwaysDeny:已棄用,禁止所有請求,用于測驗,
  • DefaultStorageClass:會關注PersistentVolumeClaim資源物件的創建,如果其中沒有包含任何針對特定Storage class的請求,則為其指派指定的Storage class,在這種情況下,用戶無須在PVC中設定任何特定的Storage class就能完成PVC的創建了,如果沒有設定默認的Storage class,該控制器就不會進行任何操作;如果設定了超過一個的默認Storage class,該控制器就會拒絕所有PVC物件的創建申請,并回傳錯誤資訊,因此需要確保Storage class物件的配置只有一個默認值,
注意:該控制器僅關注PVC的創建程序,對更新程序無效,
  • DefaultTolerationSeconds:針對沒有設定容忍node.kubernetes.io/not-ready:NoExecute或者node.alpha.kubernetes.io/unreachable:NoExecute的Pod,設定5min的默認容忍時間,
  • DenyExecOnPrivileged:已棄用,攔截所有想在Privileged Container上執行命令的請求,如果你的集群支持Privileged Container,又希望限制用戶在這些Privileged Container上執行命令,那么強烈推薦使用它,其功能已被合并到DenyEscalatingExec中,
  • DenyEscalatingExec:攔截所有exec和attach到具有特權的Pod上的請求,如果你的集群支持運行有escalated privilege權限的容器,又希望限制用戶在這些容器內執行命令,那么強烈推薦使用它,
  • EventReateLimit:Alpha版本,用于應對事件密集情況下對API Server造成的洪水攻擊,
  • ExtendedResourceToleration:如果需要創建帶有特定資源(例如GPU、FPGA等)的獨立節點,則可能會對節點進行Taint處理來進行特別配置,該控制器能夠自動為申請這些特別資源的Pod加入Toleration定義,無須人工干預,
  • ImagePolicyWebhook:這個插件將允許后端的一個Webhook程式來完成Admission Controller的功能,ImagePolicyWebhook需要使用一個組態檔(通過kube-API Server的啟動引數--admission-control-config-file設定)定義后端Webhook的引數,目前是Alpha版本的功能,
  • Initializers:Alpha,用于為動態準入控制提供支持,通過修改待創建資源的元資料來完成對該資源的修改,LimitPodHardAntiAffinityTopology:該插件啟用了Pod的反親和性調度策略設定,在設定親和性策略引數requiredDuringSchedulingRequiredDuringExecution時要求將topologyKey的值設定為“kubernetes.io/hostname”,否則Pod會被拒絕創建,
  • LimitRanger:這個插件會監控進入的請求,確保請求的內容符合在Namespace中定義的LimitRange物件里的資源限制,如果要在Kubernetes集群中使用LimitRange物件,則必須啟用該插件才能實施這一限制,LimitRanger還能用于為沒有設定資源請求的Pod自動設定默認的資源請求,該插件會為default命名空間中的所有Pod設定0.1CPU的資源請求,
  • MutatingAdmissionWebhook:Beta,這一插件會變更符合要求的請求的內容,Webhook以串行的方式順序執行,
  • NamespaceAutoProvision:這一插件會檢測所有進入的具備命名空間的資源請求,如果其中參考的命名空間不存在,就會自動創建命名空間,
  • NamespaceExists:這一插件會檢測所有進入的具備命名空間的資源請求,如果其中參考的命名空間不存在,就會拒絕這一創建程序,
  • NamespaceLifecycle:如果嘗試在一個不存在的Namespace中創建資源物件,則該創建請求將被拒絕,當洗掉一個Namespace時,系統將會洗掉該Namespace中的所有物件,包括Pod、Service等,并阻止洗掉default、kube-system和kube-public這三個命名空間,
  • NodeRestriction:該插件會限制kubelet對Node和Pod的修改行為,為了實作這一限制,kubelet必須使用system:nodes組中用戶名為system:node:<nodeName>的Token來運行,符合條件的kubelet只能修改自己的Node物件,也只能修改分配到各自Node上的Pod物件,在Kubernetes1.11以后的版本中,kubelet無法修改或者更新自身Node的taint屬性,在Kubernetes1.13以后,這一插件還會阻止kubelet洗掉自己的Node資源,并限制對有kubernetes.io/或k8s.io/前綴的標簽的修改,
  • OnwerReferencesPermissionEnforcement:在該插件啟用后,一個用戶要想修改物件的metadata.ownerReferences,就必須具備delete權限,該插件還會保護物件的metadata.ownerReferences[x].blockOwnerDeletion欄位,用戶只有在對finalizers子資源擁有update權限的時候才能進行修改,
  • PersistentVolumeLabel:棄用,這一插件自動根據云供應商(例如GCE或AWS)的定義,為PersistentVolume物件加入region或zone標簽,以此來保障PersistentVolume和Pod同處一區,如果插件不為PV自動設定標簽,則需要用戶手動保證Pod和其加載卷的相對位置,該插件正在被Cloudcontrollermanager替換,從Kubernetes1.11版本開始默認被禁止,
  • PodNodeSelector:該插件會讀取命名空間的annotation欄位及全域配置,來對一個命名空間中物件的節點選擇器設定默認值或限制其取值,
  • PersistentVolumeClaimResize:該插件實作了對PersistentVolumeClaim發起的resize請求的額外校驗,
  • PodPreset:該插件會使用PodSelector選擇Pod,為符合條件的Pod進行注入,
  • PodSecurityPolicy:在創建或修改Pod時決定是否根據Pod的securitycontext和可用的PodSecurityPolicy對Pod的安全策略進行控制,
  • PodTolerationRestriction:該插件首先會在Pod和其命名空間的Toleration中進行沖突檢測,如果其中存在沖突,則拒絕該Pod的創建,它會把命名空間和Pod的Toleration進行合并,然后將合并的結果與命名空間中的白名單進行比較,如果合并的結果不在白名單內,則拒絕創建,如果不存在命名空間級的默認Toleration和白名單,則會采用集群級別的默認Toleration和白名單,
  • Priority:這一插件使用priorityClassName欄位來確定優先級,如果沒有找到對應的PriorityClass,該Pod就會被拒絕,
  • ResourceQuota:用于資源配額管理目的,作用于Namespace,該插件攔截所有請求,以確保在Namespace上的資源配額使用不會超標,推薦在Admission Control引數串列中將這個插件排最后一個,以免可能被其他插件拒絕的Pod被過早分配資源,
  • SecurityContextDeny:這個插件將在Pod中定義的SecurityContext選項全部失效,SecurityContext在Container中定義了作業系統級別的安全設定(uid、gid、capabilities、SELinux等),在未設定PodSecurityPolicy的集群中建議啟用該插件,以禁用容器設定的非安全訪問權限,
  • ServiceAccount:這個插件將ServiceAccount實作了自動化,如果想使用ServiceAccount物件,那么強烈推薦使用它,
  • StorageObjectInUseProtection:這一插件會在新創建的PVC或PV中加入kubernetes.io/pvc-protection或kubernetes.io/pv-protection的finalizer,如果想要洗掉PVC或者PV,則直到所有finalizer的作業都完成,洗掉動作才會執行,
  • ValidatingAdmissionWebhook:在Kubernetes1.8中為Alpha版本,在Kubernetes1.9中為Beta版本,該插件會針對符合其選擇要求的請求呼叫校驗Webhook,目標Webhook會以并行方式運行;如果其中任何一個Webhook拒絕了該請求,該請求就會失敗,
在API Server上設定引數即可定制我們需要的準入控制鏈,如果啟用多種準入控制選項,則建議設定:在Kubernetes1.9及之前的版本中使用的引數是--admission-control,并且其中的內容是順序相關的;在Kubernetes1.10及之后的版本中,該引數為--enable-admission-plugins,并且與順序無關, 對Kubernetes 1.10及以上版本設定如下:
  1 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultsStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota
對Kubernetes 1.9及以下版本設定如下:
  1 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,CalidatingAdmissionWebhook,ResourceQuota

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/125309.html

標籤:Linux

上一篇:作業系統-信號量臨界區保護

下一篇:想問下有什么辦法可以實作???

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more