RSS Email Twitter GitHub Dribbble LinkedIn Facebook Instagram YouTube Pinterest Reddit icon menu

Cody's 探索日誌

東摸西摸,十分好奇

PV: / UV:

TAGS

重溫 Kubernetes - 1

在 kubernetes 剛出來的時期,很早就有接觸和使用,但當時畢竟只是一個研究生 並沒有太多商業上的開發經驗,雖然覺得很 k8s 很酷,但經歷一段時間的磨練和理解想重溫 K8S 的懷抱 Kubernetes 啟動 docker 附帶 kubernetes,暫時先不進行架設 觀念學習 pod 是最小單位,擺放 container 的位置,可以啟動單個或多個 container replic deployment 是一個 設定撰寫 Deployment 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 apiVersion: apps/v1 kind: Deployment metadata: name: test-staging-dep # deployment 名稱 namespace: default labels: # deployment 標籤 app: test-app spec: selector: matchLabels: # 選擇器會管理具備此標籤的 pod app: test-app replicas: 3 # 要啟動多少個 pod 副本 strategy: rollingUpdate: maxSurge: 50% maxUnavailable: 50% type: RollingUpdate template: metadata: labels: # pod 的模版指定的標籤,會受到上面 deployment 的選擇器控管 app: test-app spec: containers: - name: test # container 名稱 image: 192.

如何設定 SFTP

SSH SFTP設定 先新增一個群組,提供給 sftp 使用者 $ sudo groupadd sftpusers 新增 sftp 的使用者 $ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin [username] $ sudo passwd [username] 建立 sftpuser 的 root 目錄 /home/sftp/ $ sudo mkdir -p /home/sftp/[username]/incoming 將 incoming 的目錄權限設定給 user $ sudo chown [username]:sftpuse /home/sftp/[username]/incoming/ 確認一下是否有設定正確 $ ls -ld /home/sftp/arcsight/incoming/ 情境需求 限制使用者登入 限制 IP 位置 限制目錄位置 限制只能使用 SFTP $ ls -ld /home/sftp/<UserName>/ $ ls -ld /home/sftp/ #只允許特定使用者登入 AllowUsers arcsight root #只允許用10.

透過 Golang 進行 XDP 進行 UDP 收發

為了解決網路程式的收發效能,根據三個面向進行研究 分別是系統、程式、硬體三個面向 程式面向 程式處理邏輯優化,縮短處理下一包的時間 使用多核效能,更改成多進程或多執行序,同時以參考 Reactor、Proactor 等模型架構,不一定要採用 透過 SO_REUSEPORT 搭配 RSS 進行有效的 CPU 使用 系統面向 系統層的優化,分別針對收容能力及核心分配做處理 收容能力 不用無條件的往上增加,而是增對需求條件進行調校,因為不單單只有收容能力需要調整 1 2 3 4 5 6 # 增加對 NIC Ring Buffer 的抓取的 CPU 資源,預設 300 net.core.netdev_budget=900 # 寫入的 Socket Buffer net.core.wmem_max=20971520 # 接收的 Socket Buffer net.core.rmem_max=20971520 核心分配 若為多行程/多進程設計,並有搭配 REUSEPORT,則可以降低 CPU 分配 透過 taskset、isolation、cgroup 進行分配、隔離、綁定 硬體面向 透過支援的網卡設定 Receive Side Scaling (RSS),並透過 SO_REUSEPORT 的搭配,使 CPU 有效分配 RSS 這邊簡端說明,NIC 隊列通道會是一個以上,預設可能只用一個 可以啟用多個通道進行接收並搭配多個 CPU,達到更高的接收、發送效能 有興趣的可以閱讀 Linux Network Scaling: Receiving Packets

[網路] UDP 丟包追查

前言 UDP 若發生丟包,往往會認為封包遺失在路上,然而需要因環境架構來進行判斷 若發生問題的在一個大量的高速 UDP 的環境,則狀況可能會更加複雜,但往往事實出乎意料 知識 接收 網卡接收封包存入 Ring Buffer 然後透過 Kernel 存入 Socket Buffer 然後 Application 再從 Socket Buffer 取出封包 傳出 APP 將封包透過系統調用執行 sendTo 經歷 UDP封裝、IP封裝後進入 Socket Buffer,然後經由 Traffic Control 的 Qdisc(Classless Queuing Disciplines),而 Qdisc 會有一套傳輸的規則,符合規則才從 Ring Buffer 透過網卡送出 發生原因 傳送方 UDP 傳送速率太快受到 Qdisc 規則限制 TX Ring Buffer 太小 Socket Buffer 太小 接收方 RX Ring Buffer 太小 Socket Buffer 太小 App 處理太慢 檢查流程 確認網路協議統計 UDP 是否出現丟包 buffer errors 是否不為 0

vscode 支援 ipynb 介面

最近開發有用到 python,但是已經用習慣 vscode,後來發現原來 vscode 已經支援 ipynb 進行開發 Env vscode: 1.59.1 python: 3.9.6 64-bit Install vscode 要安裝以下套件,可以透過 command 進行安裝 1 2 code --install-extension ms-toolsai.jupyter code --install-extension ms-python.python 如果想要將 ipynb 轉換成 python script 進行匯出,則需要再安裝 jupyter 透過以下指令 1 pip3 install notebook Conclusion 所以如果不轉換檔案,就可以不安裝 jupyter,並且 vscode 是可以正常運行的 Ref VS Code的Python擴充套件現支援原生編輯Jupyter Notebooks

保持 SSH 連線

在公司工作的時候,需要連至客戶的伺服器時,有時候放置太久就斷線了 根據網路上的資料,可以設定 ~/.ssh/config,讓 SSH Session 連線可以保持 SSH Config ~/.ssh/config : 用戶設定檔 /etc/ssh/ssh_config : 系統設定檔 以下設定的意思是,任何主機的連線,每 60秒 發送一個 KeepAlive,使其保持連線 Host * ServerAliveInterval 60 雖然前輩說用 top 讓連線之間保持傳輸即可,但有時候還是會忘記用,結果就段開了 還要請客戶協助重新登入是真的挺麻煩的 Ref Keeping SSH session alive

快速產生大檔案 Linux/MacOS/Windows

偶爾需要一大檔案進行傳輸測試,但礙於手邊沒有檔案 Linux 透過以下指令可以快速產生一個 1G 的空檔 1 dd if=/dev/zero of=./1G_File bs=1M count=1024 如果要更快的產生方式,可以透過 seek 略過內容到指定大小的終點位址 1 dd of=./1G_File bs=1 count=0 seek=1G MacOS 使用 makefile 就能輕鬆辦到 1 2 3 # mkfile -n size[b|k|m|g] filename mkfile -n 1g 1G_File Windows 透過以指令的方式,在 cmd 鍵入以下指令 1 2 3 # fsutil file createnew <file_name> <file_size_in_kBs> fsutil file createnew 1G_File 1073741824

Linux shell 的圖形互動式介面 - Dialog

最近在寫一些純文字介面的工具,但是在操作上對非資訊人員還是不夠直覺 想知道怎麼開發類似於 BIOS 的文字操控介面,但是礙於不曉得相關的資訊 後來終於讓我查到關鍵字 Text-based user interface/TUI,然後選擇了一個看起來比較靠普的 Dialog Linux Dialog 是可以在 Terminal 上快速建立圖形交互介面的工具,功能十分強大、方便 撰寫 Shell Script 再搭配 Dialog 可以讓人比較直覺得操作,減少操作上的不便 雖然現在比較多使用網頁進行交互操作,但是可以不必特地架設網頁伺服器,減少一些不必要的問題 安裝 看起來 Dialog 是還有持續在維護,Mac 透過 brew 安裝的版本甚至是 20200327 的版本 可見還是有許多人喜愛以這種風格呈現操作介面 Mac 1 2 3 4 brew install dialog dialog --version > Version: 1.3-20200327 Ubuntu 18.04 1 2 3 4 apt-get install dialog dialog --version > Version 1.3-20171209 CentOS 6/7 1 2 3 4 yum install dialog dialog --version > Version 1.