主頁 > 作業系統 > 003.Kubernetes二進制部署準備

003.Kubernetes二進制部署準備

2020-10-05 04:52:36 作業系統

一 安全策略

1.1 策略需求

相應的充足資源的Linux服務器;

設定相應的主機名,參考命令:hostnamectl set-hostname master01 ;

Mac及UUID唯一;

若未關閉防火墻則建議放通相應埠,如下:

  • Master節點
規則 方向 埠范圍 作用 使用者
TCP Inbound 6443* Kubernetes API server All
TCP Inbound 2379-2380 etcd server client API kube-apiserver, etcd
TCP Inbound 10250 Kubelet API Self, Control plane
TCP Inbound 10251 kube-scheduler Self
TCP Inbound 10252 kube-controller-manager Self
TCP Inbound 10257 kube-controller-manager Self

其他更多前置準備見:https://kubernetes.io/zh/docs/setup/independent/install-kubeadm/

  • Worker 節點
規則 方向 埠范圍 作用 使用者
TCP Inbound 80/443 ingress埠 All
TCP Inbound 10250 Kubelet API Self, Control plane
TCP Inbound 30000-32767 NodePort Services** All

二 主要組件

2.1 核心組件

  • etcd:保存了整個集群的狀態;
  • apiserver:提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API注冊和發現等機制;
  • controller manager:負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;
  • scheduler:負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;
  • kubelet:負責維護容器的生命周期,同時也負責Volume(CVI)和網路(CNI)的管理;
  • Container runtime:負責鏡像管理以及Pod和容器的真正運行(CRI);
  • kube-proxy:負責為Service提供cluster內部的服務發現和負載均衡,

2.2 非核心組件

  • kube-dns:負責為整個集群提供DNS服務;
  • Ingress Controller:為服務提供外網入口;
  • metrics:提供資源監控;
  • Dashboard:提供GUI;
  • longhorn:Kubernetes的開源分布式塊存盤系統,

延伸1:對master節點服務組件的理解:

2018030821

Master節點上面主要由四個模塊組成:APIServer,schedule,controller-manager,etcd, APIServer: APIServer負責對外提供RESTful的kubernetes API的服務,它是系統管理指令的統一介面,任何對資源的增刪該查都要交給APIServer處理后再交給etcd,如架構圖中所示,kubectl(Kubernetes提供的客戶端工具,該工具內部就是對Kubernetes API的呼叫)是直接和APIServer互動的,
schedule: schedule負責調度Pod到合適的Node上,如果把scheduler看成一個黑匣子,那么它的輸入是pod和由多個Node組成的串列,輸出是Pod和一個Node的系結,即將這個pod部署到這個Node上,Kubernetes目前提供了調度演算法,但是同樣也保留了介面,用戶可以根據自己的需求定義自己的調度演算法,
controller manager: 如果APIServer做的是前臺的作業的話,那么controller manager就是負責后臺的,每一個資源都對應一個控制器,而control manager就是負責管理這些控制器的,比如我們通過APIServer創建了一個Pod,當這個Pod創建成功后,APIServer的任務就算完成了,而后面保證Pod的狀態始終和我們預期的一樣的重任就由controller manager去保證了,
etcd:etcd是一個高可用的鍵值存盤系統,kubernetes使用它來存盤各個資源的狀態,從而實作了Restful的API, 延伸2:對master節點服務組件的理解: 每個Node節點主要由三個模板組成:kubelet、kube-proxy、runtime, runtime:runtime指的是容器運行環境,目前Kubernetes支持docker和rkt兩種容器,
kube-proxy: 該模塊實作了kubernetes中的服務發現和反向代理功能,kube-proxy支持TCP和UDP連接轉發,默認基于Round Robin演算法將客戶端流量轉發到與service對應的一組后端pod,服務發現方面,kube-proxy使用etcd的watch機制,監控集群中service和endpoint物件資料的動態變化,并且維護一個service到endpoint的映射關系,從而保證了后端pod的IP變化不會對訪問者造成影響,另外,kube-proxy還支持session affinity,
kublet:kublet是Master在每個Node節點上面的agent,是Node節點上面最重要的模塊,它負責維護和管理該Node上的所有容器,但是如果容器不是通過kubernetes創建的,它并不會管理,本質上,它負責使Pod的運行狀態與期望的狀態一致,

三 部署規劃

3.1 節點規劃

節點 IP 型別 運行服務
master01 172.24.8.71 Kubernetes master節點 docker、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、kubelet、kube-nginx、flannel
master02 172.24.8.72 Kubernetes master節點 docker、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、 kubelet、kube-nginx、flannel
master03 172.24.8.73 Kubernetes master節點 docker、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、 kubelet、kube-nginx、flannel
worker01 172.24.8.74 Kubernetes node節點1 docker、etcd、kubelet、proxy、flannel
worker02 172.24.8.75 Kubernetes node節點2 docker、etcd、kubelet、proxy、flannel
VIP 172.24.8.100

提示:本實驗使用三節點master部署,從而實作master的高可用,

3.2 組件及版本

  • Kubernetes 1.18.3
  • Docker 19.03.12
  • Etcd 3.3.22
  • Flanneld 0.12.0
  • 插件:
    • Coredns
    • Dashboard
    • Metrics-server
    • Longhorn

3.3 組件策略

kube-apiserver:

  • 使用節點本地 nginx 4 層透明代理實作高可用;
  • 關閉非安全埠 8080 和匿名訪問;
  • 在安全埠 6443 接收 https 請求;
  • 嚴格的認證和授權策略 (x509、token、RBAC);
  • 開啟 bootstrap token 認證,支持 kubelet TLS bootstrapping;
  • 使用 https 訪問 kubelet、etcd,加密通信;

kube-controller-manager:

  • 3 節點高可用;
  • 關閉非安全埠,在安全埠 10259 接收 https 請求;
  • 使用 kubeconfig 訪問 apiserver 的安全埠;
  • 自動 approve kubelet 證書簽名請求 (CSR),證書過期后自動輪轉;
  • 各 controller 使用自己的 ServiceAccount 訪問 apiserver;

kube-scheduler:

  • 3 節點高可用;
  • 使用 kubeconfig 訪問 apiserver 的安全埠;

kubelet:

  • 使用 kubeadm 動態創建 bootstrap token,而不是在 apiserver 中靜態配置;
  • 使用 TLS bootstrap 機制自動生成 client 和 server 證書,過期后自動輪轉;
  • 在 KubeletConfiguration 型別的 JSON 檔案配置主要引數;
  • 關閉只讀埠,在安全埠 10250 接收 https 請求,對請求進行認證和授權,拒絕匿名訪問和非授權訪問;
  • 使用 kubeconfig 訪問 apiserver 的安全埠;

kube-proxy:

  • 使用 kubeconfig 訪問 apiserver 的安全埠;
  • 在 KubeProxyConfiguration 型別的 JSON 檔案配置主要引數;
  • 使用 ipvs 代理模式;

集群插件:

  • DNS:使用功能、性能更好的 coredns;
  • Dashboard:支持登錄認證;
  • Metric:metrics-server,使用 https 訪問 kubelet 安全埠;
  • Longhorn:Kubernetes的開源分布式塊存盤系統,

提示:本方案后續操作若未特別說明,則表示所有操作僅需要在master01節點進行,

本方案總體參考:https://github.com/opsnull/follow-me-install-kubernetes-cluster,

四 前置準備

4.1 手動添加決議

  1 [root@master01 ~]# hostnamectl set-hostname master01	#其他節點依次修改對應主機名
  2 [root@master01 ~]# cat >> /etc/hosts << EOF
  3 172.24.8.71 master01
  4 172.24.8.72 master02
  5 172.24.8.73 master03
  6 172.24.8.74 worker01
  7 172.24.8.75 worker02
  8 172.24.8.76 worker03
  9 EOF

4.2 初始化準備

[root@master01 ~]# vi k8sinit.sh

  1 #!/bin/sh
  2 #****************************************************************#
  3 # ScriptName: k8sinit.sh
  4 # Author: xhy
  5 # Create Date: 2020-06-27 21:59
  6 # Modify Author: xhy
  7 # Modify Date: 2020-06-27 21:59
  8 # Version: 
  9 #***************************************************************#
 10 # Initialize the machine. This needs to be executed on every machine.
 11 
 12 # Mkdir k8s directory
 13 mkdir -p /opt/k8s/bin/
 14 mkdir -p /data/k8s/k8s
 15 mkdir -p /data/k8s/docker
 16 
 17 # Install docker
 18 useradd -m docker
 19 
 20 # Disable the SELinux.
 21 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
 22 
 23 # Turn off and disable the firewalld.
 24 systemctl stop firewalld
 25 systemctl disable firewalld
 26 
 27 # Modify related kernel parameters & Disable the swap.
 28 cat > /etc/sysctl.d/k8s.conf << EOF
 29 net.ipv4.ip_forward = 1
 30 net.bridge.bridge-nf-call-ip6tables = 1
 31 net.bridge.bridge-nf-call-iptables = 1
 32 net.ipv4.tcp_tw_recycle = 0
 33 vm.swappiness = 0
 34 vm.overcommit_memory = 1
 35 vm.panic_on_oom = 0
 36 net.ipv6.conf.all.disable_ipv6 = 1
 37 EOF
 38 sysctl -p /etc/sysctl.d/k8s.conf >&/dev/null
 39 swapoff -a
 40 sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
 41 modprobe br_netfilter
 42 
 43 # Add ipvs modules
 44 cat > /etc/sysconfig/modules/ipvs.modules <<EOF
 45 #!/bin/bash
 46 modprobe -- ip_vs
 47 modprobe -- ip_vs_rr
 48 modprobe -- ip_vs_wrr
 49 modprobe -- ip_vs_sh
 50 modprobe -- nf_conntrack_ipv4
 51 modprobe -- nf_conntrack
 52 EOF
 53 
 54 chmod 755 /etc/sysconfig/modules/ipvs.modules
 55 bash /etc/sysconfig/modules/ipvs.modules
 56 
 57 # Install rpm
 58 yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget gcc gcc-c++ make libnl libnl-devel libnfnetlink-devel openssl-devel
 59 
 60 # Update kernel
 61 rpm --import http://down.linuxsb.com:8888/RPM-GPG-KEY-elrepo.org
 62 rpm -Uvh http://down.linuxsb.com:8888/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
 63 yum --disablerepo="*" --enablerepo="elrepo-kernel" install -y kernel-ml
 64 sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT=0/' /etc/default/grub
 65 grub2-mkconfig -o /boot/grub2/grub.cfg
 66 yum update -y
 67 
 68 # ADD k8s bin to PATH
 69 echo 'export PATH=/opt/k8s/bin:$PATH' >> /root/.bashrc
 70 
 71 # Reboot the machine.
 72 # reboot

腳本釋義:此腳本所包含的操作及優化分解如下:

  • 添加docker賬戶;
  • 關閉SELinux;
  • 關閉iptables;
  • 關閉swap:
    • vm.swappiness = 0
  • 其他內核優化:
    • vm.overcommit_memory = 1 # 不檢查物理記憶體是否夠用
    • vm.panic_on_oom = 0 # 開啟 OOM
    • net.ipv6.conf.all.disable_ipv6 = 1 # 關閉 IPV6
    • net.ipv4.ip_forward = 1 # 打開轉發功能
    • net.bridge.bridge-nf-call-ip6tables = 1
    • net.bridge.bridge-nf-call-iptables = 1 # 橋接流量獲得通過主機iptables規則
    • net.ipv4.tcp_tw_recycle = 0 # 開啟TCP連接中TIME-WAIT sockets的快速回收
    • net.ipv6.conf.all.disable_ipv6 = 1 # 禁用整個系統所有介面的IPv6

提示:必須關閉 tcp_tw_recycle,否則和 NAT 沖突,會導致服務不通;關閉 IPV6,防止觸發 docker BUG,

  • 安裝建議軟體包;

提示:為了更好的管理和查看ipvs,可安裝相應的管理工具ipvsadm,具體使用參考《002.LVS管理工具的安裝與使用》,

  • 加載IPVS:

pod的負載均衡是用kube-proxy來實作的,實作方式有兩種,一種是默認的iptables,一種是ipvs,相對iptables,ipvs有更好的性能,且當前ipvs已經加入到了內核的主干,

    • ip_vs
    • ip_vs_rr
    • ip_vs_wrr
    • ip_vs_sh
    • nf_conntrack_ipv4
  • 升級內核版本,

提示:對于某些特性,可能需要升級內核,內核升級操作見《018.Linux升級內核》,4.19版及以上內核nf_conntrack_ipv4已經改為nf_conntrack,

4.3 互信配置

為了更方便遠程分發檔案和執行命令,本實驗配置master節點到其它節點的 ssh 信任關系,

  1 [root@master01 ~]# ssh-keygen -f ~/.ssh/id_rsa -N ''
  2 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@master01
  3 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@master02
  4 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@worker01
  5 [root@master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@worker02

提示:本步驟操作僅需要在master01節點操作,

4.4 環境變數

[root@master01 ~]# vi environment.sh

  1 #!/bin/sh
  2 #****************************************************************#
  3 # ScriptName: environment.sh
  4 # Author: xhy
  5 # Create Date: 2020-06-27 22:19
  6 # Modify Author: xhy
  7 # Modify Date: 2020-06-27 22:19
  8 # Version: 
  9 #***************************************************************#
 10 
 11 # 生成 EncryptionConfig 所需的加密 key
 12 export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
 13 
 14 # 集群 MASTER 機器 IP 陣列
 15 export MASTER_IPS=(172.24.8.71 172.24.8.72 172.24.8.73)
 16 
 17 # 集群 MASTER IP 對應的主機名陣列
 18 export MASTER_NAMES=(master01 master02 master03)
 19 
 20 # 集群 NODE 機器 IP 陣列
 21 export NODE_IPS=(172.24.8.74 172.24.8.75)
 22 
 23 # 集群 NODE IP 對應的主機名陣列
 24 export NODE_NAMES=(worker01 worker02)
 25 
 26 # 集群所有機器 IP 陣列
 27 export ALL_IPS=(172.24.8.71 172.24.8.72 172.24.8.73 172.24.8.74 172.24.8.75)
 28 
 29 # 集群所有IP 對應的主機名陣列
 30 export ALL_NAMES=(master01 master02 master03 worker01 worker02)
 31 
 32 # etcd 集群服務地址串列
 33 export ETCD_ENDPOINTS="https://172.24.8.71:2379,https://172.24.8.72:2379,https://172.24.8.73:2379"
 34 
 35 # etcd 集群間通信的 IP 和埠
 36 export ETCD_NODES="master01=https://172.24.8.71:2380,master02=https://172.24.8.72:2380,master03=https://172.24.8.73:2380"
 37 
 38 # kube-apiserver 的反向代理(kube-nginx)地址埠
 39 export KUBE_APISERVER="https://172.24.8.100:16443"
 40 
 41 # 節點間互聯網路介面名稱
 42 export IFACE="eth0"
 43 
 44 # etcd 資料目錄
 45 export ETCD_DATA_DIR="/data/k8s/etcd/data"
 46 
 47 # etcd WAL 目錄,建議是 SSD 磁盤磁區,或者和 ETCD_DATA_DIR 不同的磁盤磁區
 48 export ETCD_WAL_DIR="/data/k8s/etcd/wal"
 49 
 50 # k8s 各組件資料目錄
 51 export K8S_DIR="/data/k8s/k8s"
 52 
 53 # docker 資料目錄
 54 export DOCKER_DIR="/data/k8s/docker"
 55 
 56 ## 以下引數一般不需要修改
 57 
 58 # TLS Bootstrapping 使用的 Token,可以使用命令 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成
 59 BOOTSTRAP_TOKEN="41f7e4ba8b7be874fcff18bf5cf41a7c"
 60 
 61 # 最好使用 當前未用的網段 來定義服務網段和 Pod 網段
 62 
 63 # 服務網段,部署前路由不可達,部署后集群內路由可達(kube-proxy 保證)
 64 SERVICE_CIDR="10.20.0.0/16"
 65 
 66 # Pod 網段,建議 /16 段地址,部署前路由不可達,部署后集群內路由可達(flanneld 保證)
 67 CLUSTER_CIDR="10.10.0.0/16"
 68 
 69 # 服務埠范圍 (NodePort Range)
 70 export NODE_PORT_RANGE="1-65535"
 71 
 72 # flanneld 網路配置前綴
 73 export FLANNEL_ETCD_PREFIX="/kubernetes/network"
 74 
 75 # kubernetes 服務 IP (一般是 SERVICE_CIDR 中第一個IP)
 76 export CLUSTER_KUBERNETES_SVC_IP="10.20.0.1"
 77 
 78 # 集群 DNS 服務 IP (從 SERVICE_CIDR 中預分配)
 79 export CLUSTER_DNS_SVC_IP="10.20.0.254"
 80 
 81 # 集群 DNS 域名(末尾不帶點號)
 82 export CLUSTER_DNS_DOMAIN="cluster.local"
 83 
 84 # 將二進制目錄 /opt/k8s/bin 加到 PATH 中
 85 export PATH=/opt/k8s/bin:$PATH

  1 [root@master01 ~]# chmod u+x *.sh
  2 [root@master01 ~]# source /root/environment.sh

4.5 分發并執行環境初始化

  1 [root@master01 ~]# for all_ip in ${ALL_IPS[@]}
  2   do
  3     echo ">>> ${all_ip}"
  4     scp -rp /etc/hosts root@${all_ip}:/etc/hosts
  5     scp -rp k8sinit.sh root@${all_ip}:/root/
  6     ssh root@${all_ip} "bash /root/k8sinit.sh"
  7   done

提示:本步驟操作僅需要在master01節點操作,

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

標籤:Linux

上一篇:kali linux 網路配置

下一篇:linux SSH設定

標籤雲
其他(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