這篇文章主要講解了“kubernetes1.4中怎么使用sysctl命令”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“kubernetes1.4中怎么使用sysctl命令”吧!
sysctl是一個允許改變正在運行中的Linux系統內核參數的接口??梢酝ㄟ^sysctl修改Linux系統內核中的TCP/IP 堆棧和虛擬內存系統的高級選項,而且不需要重新啟動Linux系統,就可以實現優化Linux系統和提高應用進程運行性能。
通過Linux系統中的/proc虛擬文件系統來實現動態配置Linux系統內核參數,在/proc/sys目錄下有Linux系統絕大多數的內核參數,這些內核參數可以在Linux系統運行時進行修改,并且不需要重新啟動Linux系統便可以立刻生效,但是這種修改在重新啟動Linux系統后便會失效,要是想永久生效的話,需要更改配置文件/etc/sysctl.conf中相應的內核參數配置項。
可以通過下面命令獲取sysctl可以操作的所有內核參數配置項和已經配置的數值:
# sysctl –a這些內核參數主要包括下面幾類配置項: 全局內核配置項:以“kernel.”為配置項前綴,舉例: kernel.shmmax = 33554432(共享內存段的最大尺寸,以字節為單位) kernel.threads-max = 139264(Linux內核所能使用的線程最大數量) 網絡配置項:以“net.”為配置項前綴,舉例: net.ipv4.ipfrag_low_thresh = 196608(用于IP分片匯聚的最小內存用量) net.ipv4.ipfrag_high_thresh = 262144(用于IP分片匯聚的最大內存用量) 虛擬內存配置項:以“vm.”為配置項前綴,舉例: vm.swappiness = 60(減少系統對于swap頻繁的寫入,將加快應用程序之間的切換,有助于提升系統性能) vm.dirty_ratio = 40(該文件表示如果進程產生的廢數據到達系統整體內存的百分比,此時進程自信把廢數據寫回磁盤) 設備專用配置項:以“dev.”為配置項前綴,舉例: dev.raid.speed_limit_max = 200000(需要初始化同步RAID的同步最大速度限制) dev.raid.speed_limit_min = 1000(需要初始化同步RAID的同步最小速度限制) 文件系統專用配置項:以“fs.”為配置項前綴 fs.file-max = 779703(可以分配的文件句柄的最大數目) fs.file-nr = 3930 0 779703(已分配文件句柄的數目,已使用文件句柄的數目,文件句柄的最大數目,該文件是只讀的,僅用于顯示信息)
上面介紹了通過sysctl可以操作Linux系統內核參數,在這些內核參數中,有些不但是操作系統全局級別的內核參數,還是命名空間級別的內核參數。對于容器來說,是通過命名空間實現隔離的,那么就意味著這些命名空間級別的參數是容器相關的內核參數。
Linux系統命名空間的分類如下:
命名空間級別的內核參數包括: kernel.shm*(內核中共享內存相關參數),舉例: kernel.shmall = 3774873(可以使用的共享內存的總量) kernel.shmmax = 15461882265(單個共享內存段的最大值) kernel.msg*(內核中SystemV消息隊列相關參數) kernel.msgmnb = 16384(每個消息隊列的最大字節限制) kernel.msgmni = 128(同時運行的最大的消息隊列個數) kernel.sem(內核中信號量參數) kernel.sem = 250 32000 100 128(每個信號集中的最大信號量數目、系統范圍內的最大信號量總數目、每個信號發生時的最大系統操作數目、系統范圍內的最大信號集總數目) fs.mqueue.*(內核中POSIX消息隊列相關參數) fs.mqueue. msg_max = 32678(隊列里緩存的軟最大消息數目) fs.mqueue. msgsize_max = 8192(最大消息長度上限) net.*(內核中網絡配置項相關參數) net.ipv4.ipfrag_low_thresh = 196608(用于IP分片匯聚的最小內存用量) net.ipv4.ipfrag_high_thresh = 262144(用于IP分片匯聚的最大內存用量)
因為sysctl可以修改命名空間級別的內核參數,所以在Kubernetes1.4中通過sysctl來配置POD中Linux內核參數的功能,通過修改POD中Linux內核參數,可以優化POD性能,提升POD中容器運行效率。在Kubernetes1.4中這還是一個阿爾法特性。
修改Linux內核參數存在安全風險,修改錯誤很可能會降低系統性能,甚至會引起系統崩潰,所以需要謹慎對待。在Kubernetes1.4中將命名空間級別的內核參數分成了兩類,一類是安全的內核參數,一類是不安全的內核參數。所謂安全的命名空間級別內核參數,就是要能夠實現相同節點上不同POD之間的完全隔離,要滿足如下條件:
不能對相同節點上其他POD產生任何影響 不能對節點上操作系統健康造成影響 不能在POD資源限制以外獲取更多的CPU和內存資源 根據上面三個條件可以發現,大多數的命名空間級別內核參數都不是安全的。在Kubernetes1.4中,認為下面的命名空間級別內核參數是安全的: kernel.shm_rmid_forced = 1(表示是否強制將共享內存和一個進程聯系在一起,這樣的話可以通過殺死進程來釋放共享內存) net.ipv4.ip_local_port_range =1024 65000(表示允許使用的端口范圍) net.ipv4.tcp_syncookies = 1(表示是否打開TCP同步標簽,同步標簽可以防止一個套接字在有過多試圖連接時引起過載)
在Kubernetes以后的版本中,還會繼續擴充安全的命名空間級別內核參數。在Kubernetes中,所有安全的命名空間級別內核參數默認都是啟用狀態的,所有不安全的命名空間級別內核參數默認都是禁用狀態的,如果想設置不安全的內核參數,需要Kubernetes管理員手工啟用。如果管理員沒有手工啟用不安全的內核參數,那么Kubernetes仍然會進行調度,將這些帶有不安全內核參數的POD分配到節點上,但是這些POD在啟動時會失敗。
在啟動kubelet時通過增加參數“experimental-allowed-unsafe-sysctls”來啟用不安全的命名空間級別內核參數:
可以在POD配置文件中設置已經被啟用的命名空間級別內核參數:
上面的配置文件在POD中設置了安全的命名空間級內核參數:kernel.shm_rmid_forced,并且在POD中設置了兩個不安全的命名空間級內核參數:net.ipv4.route.min_pmte和kernet.msgmax。
在annotations中的“security.alpha.kubernetes.io/sysctls”參數上設置安全的命名空間級內核參數,在annotations中的“security.alpha.kubernetes.io/unsafe-sysctls”參數上設置不安全的命名空間級內核參數。
感謝各位的閱讀,以上就是“kubernetes1.4中怎么使用sysctl命令”的內容了,經過本文的學習后,相信大家對kubernetes1.4中怎么使用sysctl命令這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。