主頁 > 作業系統 > 013.Kubernetes二進制所有節點部署kubelet

013.Kubernetes二進制所有節點部署kubelet

2020-10-04 18:54:52 作業系統

一 部署 kubelet

kubelet 運行在每個 worker 節點上,接收 kube-apiserver 發送的請求,管理 Pod 容器,執行互動式命令,如 exec、run、logs 等,

kubelet 啟動時自動向 kube-apiserver 注冊節點資訊,內置的 cadvisor 統計和監控節點的資源使用情況,

為確保安全,部署時關閉了 kubelet 的非安全 http 埠,對請求進行認證和授權,拒絕未授權的訪問(如 apiserver、heapster 的請求),

1.1 獲取kubelet

提示:master01節點已下載相應二進制,可直接分發至worker節點,

1.2 分發kubelet

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
  4   do
  5     echo ">>> ${all_ip}"
  6     scp kubernetes/server/bin/kubelet root@${all_ip}:/opt/k8s/bin/
  7     ssh root@${all_ip} "chmod +x /opt/k8s/bin/*"
  8   done

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

1.3 分發kubeconfig

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_name in ${ALL_NAMES[@]}
  4   do
  5     echo ">>> ${all_name}"
  6 
  7     # 創建 token
  8     export BOOTSTRAP_TOKEN=$(kubeadm token create \
  9       --description kubelet-bootstrap-token \
 10       --groups system:bootstrappers:${all_name} \
 11       --kubeconfig ~/.kube/config)
 12 
 13     # 設定集群引數
 14     kubectl config set-cluster kubernetes \
 15       --certificate-authority=/etc/kubernetes/cert/ca.pem \
 16       --embed-certs=true \
 17       --server=${KUBE_APISERVER} \
 18       --kubeconfig=kubelet-bootstrap-${all_name}.kubeconfig
 19 
 20     # 設定客戶端認證引數
 21     kubectl config set-credentials kubelet-bootstrap \
 22       --token=${BOOTSTRAP_TOKEN} \
 23       --kubeconfig=kubelet-bootstrap-${all_name}.kubeconfig
 24 
 25     # 設定背景關系引數
 26     kubectl config set-context default \
 27       --cluster=kubernetes \
 28       --user=kubelet-bootstrap \
 29       --kubeconfig=kubelet-bootstrap-${all_name}.kubeconfig
 30 
 31     # 設定默認背景關系
 32     kubectl config use-context default --kubeconfig=kubelet-bootstrap-${all_name}.kubeconfig
 33   done

解釋:

向 kubeconfig 寫入的是 token,bootstrap 結束后 kube-controller-manager 為 kubelet 創建 client 和 server 證書,

token 有效期為 1 天,超期后將不能再被用來 boostrap kubelet,且會被 kube-controller-manager 的 tokencleaner 清理;

kube-apiserver 接收 kubelet 的 bootstrap token 后,將請求的 user 設定為 system:bootstrap:<Token ID>,group 設定為 system:bootstrappers,后續將為這個 group 設定 ClusterRoleBinding,

  1 [root@master01 work]# kubeadm token list --kubeconfig ~/.kube/config	     #查看 kubeadm 為各節點創建的 token
  2 [root@master01 work]# kubectl get secrets  -n kube-system|grep bootstrap-token   #查看各 token 關聯的 Secret

clipboard

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

1.4 分發bootstrap kubeconfig

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_name in ${ALL_NAMES[@]}
  4   do
  5     echo ">>> ${all_name}"
  6     scp kubelet-bootstrap-${all_name}.kubeconfig root@${all_name}:/etc/kubernetes/kubelet-bootstrap.kubeconfig
  7   done

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

1.5 創建kubelet 引陣列態檔

從 v1.10 開始,部分 kubelet 引數需在組態檔中配置,建議創建kubelet組態檔,

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 
  4 [root@master01 work]# cat > kubelet-config.yaml.template <<EOF
  5 kind: KubeletConfiguration
  6 apiVersion: kubelet.config.k8s.io/v1beta1
  7 address: "##ALL_IP##"
  8 staticPodPath: ""
  9 syncFrequency: 1m
 10 fileCheckFrequency: 20s
 11 httpCheckFrequency: 20s
 12 staticPodURL: ""
 13 port: 10250
 14 readOnlyPort: 0
 15 rotateCertificates: true
 16 serverTLSBootstrap: true
 17 authentication:
 18   anonymous:
 19     enabled: false
 20   webhook:
 21     enabled: true
 22   x509:
 23     clientCAFile: "/etc/kubernetes/cert/ca.pem"
 24 authorization:
 25   mode: Webhook
 26 registryPullQPS: 0
 27 registryBurst: 20
 28 eventRecordQPS: 0
 29 eventBurst: 20
 30 enableDebuggingHandlers: true
 31 enableContentionProfiling: true
 32 healthzPort: 10248
 33 healthzBindAddress: "##ALL_IP##"
 34 clusterDomain: "${CLUSTER_DNS_DOMAIN}"
 35 clusterDNS:
 36   - "${CLUSTER_DNS_SVC_IP}"
 37 nodeStatusUpdateFrequency: 10s
 38 nodeStatusReportFrequency: 1m
 39 imageMinimumGCAge: 2m
 40 imageGCHighThresholdPercent: 85
 41 imageGCLowThresholdPercent: 80
 42 volumeStatsAggPeriod: 1m
 43 kubeletCgroups: ""
 44 systemCgroups: ""
 45 cgroupRoot: ""
 46 cgroupsPerQOS: true
 47 cgroupDriver: cgroupfs
 48 runtimeRequestTimeout: 10m
 49 hairpinMode: promiscuous-bridge
 50 maxPods: 220
 51 podCIDR: "${CLUSTER_CIDR}"
 52 podPidsLimit: -1
 53 resolvConf: /etc/resolv.conf
 54 maxOpenFiles: 1000000
 55 kubeAPIQPS: 1000
 56 kubeAPIBurst: 2000
 57 serializeImagePulls: false
 58 evictionHard:
 59   memory.available:  "100Mi"
 60 nodefs.available:  "10%"
 61 nodefs.inodesFree: "5%"
 62 imagefs.available: "15%"
 63 evictionSoft: {}
 64 enableControllerAttachDetach: true
 65 failSwapOn: true
 66 containerLogMaxSize: 20Mi
 67 containerLogMaxFiles: 10
 68 systemReserved: {}
 69 kubeReserved: {}
 70 systemReservedCgroup: ""
 71 kubeReservedCgroup: ""
 72 enforceNodeAllocatable: ["pods"]
 73 EOF

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

1.6 分發kubelet 引陣列態檔

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
  4   do
  5     echo ">>> ${all_ip}"
  6     sed -e "s/##ALL_IP##/${all_ip}/" kubelet-config.yaml.template > kubelet-config-${all_ip}.yaml.template
  7     scp kubelet-config-${all_ip}.yaml.template root@${all_ip}:/etc/kubernetes/kubelet-config.yaml
  8   done

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

1.7 創建kubelet systemd

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# cat > kubelet.service.template <<EOF
  4 [Unit]
  5 Description=Kubernetes Kubelet
  6 Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  7 After=docker.service
  8 Requires=docker.service
  9 
 10 [Service]
 11 WorkingDirectory=${K8S_DIR}/kubelet
 12 ExecStart=/opt/k8s/bin/kubelet \\
 13   --bootstrap-kubeconfig=/etc/kubernetes/kubelet-bootstrap.kubeconfig \\
 14   --cert-dir=/etc/kubernetes/cert \\
 15   --cgroup-driver=cgroupfs \\
 16   --cni-conf-dir=/etc/cni/net.d \\
 17   --container-runtime=docker \\
 18   --container-runtime-endpoint=unix:///var/run/dockershim.sock \\
 19   --root-dir=${K8S_DIR}/kubelet \\
 20   --kubeconfig=/etc/kubernetes/kubelet.kubeconfig \\
 21   --config=/etc/kubernetes/kubelet-config.yaml \\
 22   --hostname-override=##ALL_NAME## \\
 23   --pod-infra-container-image=k8s.gcr.io/pause-amd64:3.2 \\
 24   --image-pull-progress-deadline=15m \\
 25   --volume-plugin-dir=${K8S_DIR}/kubelet/kubelet-plugins/volume/exec/ \\
 26   --logtostderr=true \\
 27   --v=2
 28 Restart=always
 29 RestartSec=5
 30 StartLimitInterval=0
 31 
 32 [Install]
 33 WantedBy=multi-user.target
 34 EOF

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

解釋:

  • 如果設定了 --hostname-override 選項,則 kube-proxy 也需要設定該選項,否則會出現找不到 Node 的情況;
  • --bootstrap-kubeconfig:指向 bootstrap kubeconfig 檔案,kubelet 使用該檔案中的用戶名和 token 向 kube-apiserver 發送 TLS Bootstrapping 請求;
  • K8S approve kubelet 的 csr 請求后,在 --cert-dir 目錄創建證書和私鑰檔案,然后寫入 --kubeconfig 檔案;
  • --pod-infra-container-image 不使用 redhat 的 pod-infrastructure:latest 鏡像,它不能回收容器的僵尸,

1.8 分發kubelet systemd

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_name in ${ALL_NAMES[@]}
  4   do
  5     echo ">>> ${all_name}"
  6     sed -e "s/##ALL_NAME##/${all_name}/" kubelet.service.template > kubelet-${all_name}.service
  7     scp kubelet-${all_name}.service root@${all_name}:/etc/systemd/system/kubelet.service
  8   done

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

二 啟動驗證

2.1 授權

kubelet 啟動時查找 --kubeletconfig 引數對應的檔案是否存在,如果不存在則使用 --bootstrap-kubeconfig 指定的 kubeconfig 檔案向 kube-apiserver 發送證書簽名請求 (CSR),

kube-apiserver 收到 CSR 請求后,對其中的 Token 進行認證,認證通過后將請求的 user 設定為 system:bootstrap:<Token ID>,group 設定為 system:bootstrappers,這一程序稱為 Bootstrap Token Auth,

默認情況下,這個 user 和 group 沒有創建 CSR 的權限,因此kubelet 會啟動失敗,可通過如下方式創建一個 clusterrolebinding,將 group system:bootstrappers 和 clusterrole system:node-bootstrapper 系結,

  1 [root@master01 ~]# kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --group=system:bootstrappers

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

2.2 啟動kubelet

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_name in ${ALL_NAMES[@]}
  4   do
  5     echo ">>> ${all_name}"
  6     ssh root@${all_name} "mkdir -p ${K8S_DIR}/kubelet/kubelet-plugins/volume/exec/"
  7     ssh root@${all_name} "/usr/sbin/swapoff -a"
  8     ssh root@${all_name} "systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet"
  9   done

kubelet 啟動后使用 --bootstrap-kubeconfig 向 kube-apiserver 發送 CSR 請求,當這個 CSR 被 approve 后,kube-controller-manager 為 kubelet 創建 TLS 客戶端證書、私鑰和 --kubeletconfig 檔案,

注意:kube-controller-manager 需要配置 --cluster-signing-cert-file 和 --cluster-signing-key-file 引數,才會為 TLS Bootstrap 創建證書和私鑰,

提示:啟動服務前必須先創建作業目錄;

關閉 swap 磁區,否則 kubelet 會啟動失敗,

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

2.3 查看kubelet服務

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# for all_name in ${ALL_NAMES[@]}
  4   do
  5     echo ">>> ${all_name}"
  6     ssh root@${all_name} "systemctl status kubelet"
  7   done
  8 [root@master01 work]# kubectl get csr
  9 [root@master01 work]# kubectl get nodes

clipboard

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

三 approve CSR 請求

3.1 自動 approve CSR 請求

創建三個 ClusterRoleBinding,分別用于自動 approve client、renew client、renew server 證書,

  1 [root@master01 ~]# cd /opt/k8s/work
  2 [root@master01 work]# source /root/environment.sh
  3 [root@master01 work]# cat > csr-crb.yaml <<EOF
  4  # Approve all CSRs for the group "system:bootstrappers"
  5  kind: ClusterRoleBinding
  6  apiVersion: rbac.authorization.k8s.io/v1
  7  metadata:
  8    name: auto-approve-csrs-for-group
  9  subjects:
 10  - kind: Group
 11    name: system:bootstrappers
 12    apiGroup: rbac.authorization.k8s.io
 13  roleRef:
 14    kind: ClusterRole
 15    name: system:certificates.k8s.io:certificatesigningrequests:nodeclient
 16    apiGroup: rbac.authorization.k8s.io
 17 ---
 18  # To let a node of the group "system:nodes" renew its own credentials
 19  kind: ClusterRoleBinding
 20  apiVersion: rbac.authorization.k8s.io/v1
 21  metadata:
 22    name: node-client-cert-renewal
 23  subjects:
 24  - kind: Group
 25    name: system:nodes
 26    apiGroup: rbac.authorization.k8s.io
 27  roleRef:
 28    kind: ClusterRole
 29    name: system:certificates.k8s.io:certificatesigningrequests:selfnodeclient
 30    apiGroup: rbac.authorization.k8s.io
 31 ---
 32 # A ClusterRole which instructs the CSR approver to approve a node requesting a
 33 # serving cert matching its client cert.
 34 kind: ClusterRole
 35 apiVersion: rbac.authorization.k8s.io/v1
 36 metadata:
 37   name: approve-node-server-renewal-csr
 38 rules:
 39 - apiGroups: ["certificates.k8s.io"]
 40   resources: ["certificatesigningrequests/selfnodeserver"]
 41   verbs: ["create"]
 42 ---
 43  # To let a node of the group "system:nodes" renew its own server credentials
 44  kind: ClusterRoleBinding
 45  apiVersion: rbac.authorization.k8s.io/v1
 46  metadata:
 47    name: node-server-cert-renewal
 48  subjects:
 49  - kind: Group
 50    name: system:nodes
 51    apiGroup: rbac.authorization.k8s.io
 52  roleRef:
 53    kind: ClusterRole
 54    name: approve-node-server-renewal-csr
 55    apiGroup: rbac.authorization.k8s.io
 56 EOF
 57 [root@master01 work]# kubectl apply -f csr-crb.yaml

解釋:

auto-approve-csrs-for-group:自動 approve node 的第一次 CSR; 注意第一次 CSR 時,請求的 Group 為 system:bootstrappers;

node-client-cert-renewal:自動 approve node 后續過期的 client 證書,自動生成的證書 Group 為 system:nodes;

node-server-cert-renewal:自動 approve node 后續過期的 server 證書,自動生成的證書 Group 為 system:nodes,

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

3.2 查看 kubelet 的情況

  1 [root@master01 work]# kubectl get csr | grep boot	#等待一段時間(1-10 分鐘),三個節點的 CSR 都被自動 approved
  2 [root@master01 work]# kubectl get nodes		#所有節點均 ready

clipboard

  1 [root@master01 ~]# ls -l /etc/kubernetes/kubelet.kubeconfig
  2 [root@master01 ~]# ls -l /etc/kubernetes/cert/ | grep kubelet

clipboard

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

3.3 手動 approve server cert csr

基于安全性考慮,CSR approving controllers 不會自動 approve kubelet server 證書簽名請求,需要手動 approve,

  1 [root@master01 ~]# kubectl get csr | grep node

clipboard

  1 [root@master01 ~]# kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve
  2 [root@master01 ~]# ls -l /etc/kubernetes/cert/kubelet-*

clipboard

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

四 kubelet API 介面

4.1 kubelet 提供的 API 介面

  1 [root@master01 ~]# sudo netstat -lnpt | grep kubelet		#查看kubelet監聽埠

clipboard

解釋:

  • 10248: healthz http 服務;
  • 10250: https 服務,訪問該埠時需要認證和授權(即使訪問 /healthz 也需要);
  • 未開啟只讀埠 10255;
  • 從 K8S v1.10 開始,去除了 --cadvisor-port 引數(默認 4194 埠),不支持訪問 cAdvisor UI & API,

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

4.2 kubelet api 認證和授權

kubelet 配置了如下認證引數:

  • authentication.anonymous.enabled:設定為 false,不允許匿名訪問 10250 埠;
  • authentication.x509.clientCAFile:指定簽名客戶端證書的 CA 證書,開啟 HTTPs 證書認證;
  • authentication.webhook.enabled=true:開啟 HTTPs bearer token 認證,

同時配置了如下授權引數:

authroization.mode=Webhook:開啟 RBAC 授權,

kubelet 收到請求后,使用 clientCAFile 對證書簽名進行認證,或者查詢 bearer token 是否有效,如果兩者都沒通過,則拒絕請求,提示 Unauthorized,

  1 [root@master01 ~]# curl -s --cacert /etc/kubernetes/cert/ca.pem https://172.24.8.71:10250/metrics
  2 Unauthorized
  3 [root@master01 ~]# curl -s --cacert /etc/kubernetes/cert/ca.pem -H "Authorization: Bearer 123456" https://172.24.8.71:10250/metrics
  4 Unauthorized

若通過認證后,kubelet 使用 SubjectAccessReview API 向 kube-apiserver 發送請求,查詢證書或 token 對應的 user、group 是否有操作資源的權限(RBAC),

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

4.3 證書認證和授權

  1 [root@master01 ~]# curl -s --cacert /etc/kubernetes/cert/ca.pem --cert /etc/kubernetes/cert/kube-controller-manager.pem --key /etc/kubernetes/cert/kube-controller-manager-key.pem https://172.24.8.71:10250/metrics	#默認權限不足
  2 Forbidden (user=system:kube-controller-manager, verb=get, resource=nodes, subresource=metrics)
  3 [root@master01 ~]# curl -s --cacert /etc/kubernetes/cert/ca.pem --cert /opt/k8s/work/admin.pem --key /opt/k8s/work/admin-key.pem https://172.24.8.71:10250/metrics | head			#使用最高權限的admin

clipboard

解釋:

--cacert、--cert、--key 的引數值必須是檔案路徑,如上面的 ./admin.pem 不能省略 ./,否則回傳 401 Unauthorized,

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

4.4 創建bear token 認證和授權

  1 [root@master01 ~]# kubectl create sa kubelet-api-test
  2 [root@master01 ~]# kubectl create clusterrolebinding kubelet-api-test --clusterrole=system:kubelet-api-admin --serviceaccount=default:kubelet-api-test
  3 [root@master01 ~]# SECRET=$(kubectl get secrets | grep kubelet-api-test | awk '{print $1}')
  4 [root@master01 ~]# TOKEN=$(kubectl describe secret ${SECRET} | grep -E '^token' | awk '{print $2}')
  5 [root@master01 ~]# echo ${TOKEN}

clipboard

  1 [root@master01 ~]# curl -s --cacert /etc/kubernetes/cert/ca.pem -H "Authorization: Bearer ${TOKEN}" https://172.24.8.71:10250/metrics | head

clipboard

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

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

標籤:Linux

上一篇:006.Kubernetes二進制所有節點部署Docker

下一篇:Shell—實作DDOS攻擊自動封禁IP

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