超碰人人人人人,色婷婷综合久久久久中文一区二区,国产-第1页-浮力影院,欧美老妇另类久久久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

部署簡單的單節(jié)點k8s

freeflydom
2025年4月8日 9:50 本文熱度 95

1、Kubernetes簡介

Kubernetes,簡稱K8s,是用8代替名字中間的8個字符“ubernete”而成的縮寫。Kubernetes是Google開源的一個容器編排引擎,用于自動部署、擴展和管理容器化應(yīng)用程序, 現(xiàn)在由Cloud Native Computing Foundation (CNCF) 維護。

主要特性:

  • 自動化部署和復制
  • 自動擴縮容
  • 負載均衡
  • 自我修復
  • 服務(wù)發(fā)現(xiàn)和配置管理

官網(wǎng):https://kubernetes.io/zh-cn/

Github開源地址:https://github.com/kubernetes/kubernetes

2、Kubernetes安裝方式

我們可以通過官網(wǎng)文檔查看k8s的幾種安裝方式。文檔地址:https://kubernetes.io/zh-cn/docs/tasks/tools/

  • kubeadm:官方推薦的快速部署工具
  • 二進制包:所有組件都是二進制文件,靈活性高,比較麻煩
  • minikube:本地單節(jié)點測試環(huán)境
  • kind:使用Docker容器運行本地Kubernetes集群,將Kubernetes所需要的所有組件全部部署在一個Docker容器中,可以很方便的搭建Kubernetes集群

根據(jù)調(diào)查,二進制包雖然提供了很大的靈活性,但因為配置復雜度高,通常只會被少數(shù)有特殊需求的場景采用。目前使用最多的安裝方式為:使用kubeadm進行安裝和使用minikube進行安裝 ,kubeadm主要用于搭建生產(chǎn)環(huán)境集群,而minikube主要用于個人學習本地開發(fā)環(huán)境安裝。kind只有在少數(shù)資源不夠的環(huán)境下才會使用。

以下為minikubekubeadm這兩種安裝方式的不同點進行對比:

安裝和啟動方式不同:

  • MiniKube安裝:安裝Minikube相對簡單,可以通過下載安裝包使用Minikube程序進行安裝,只需運行minikube start命令即可?,然后就可以部署應(yīng)用程序,擴容和管理集群。
  • kubeadm安裝: 安裝Kubernetes需要更多的步驟,使用kubeadm、kubelet、kubectl三個工具進行管理安裝,部署Kubernetes集群,一主二從。然后部署應(yīng)用程序,擴容和管理集群。

用途不同:

  • Minikube?: Minikube是一個輕量級的Kubernetes集群,主要用于在本地開發(fā)和測試。它通過虛擬化技術(shù)在一個單獨的虛擬化實例中運行Kubernetes控制平面組件,使得我們可以在本地環(huán)境中模擬Kubernetes集群,從而進行開發(fā)和調(diào)試?。
  • kubeadm: Kubernetes是一個強大的容器編排平臺,用于在生產(chǎn)環(huán)境中部署和管理大規(guī)模的容器化應(yīng)用程序。它支持多節(jié)點集群,能夠處理更復雜的部署需求和更大的負載?。

適用場景不同:

  • ?Minikube?: 適用于開發(fā)者和測試人員,在本地環(huán)境中快速搭建和測試Kubernetes應(yīng)用,方便進行開發(fā)和調(diào)試?
  • kubeadm: 適用于生產(chǎn)環(huán)境,能夠處理大規(guī)模的容器部署和管理任務(wù),支持多節(jié)點集群,適合在云平臺或數(shù)據(jù)中心部署?

總結(jié):

通過上面可以看出,Minikube是一個用于在本地快速部署Kubernetes集群的工具,比較適用于開發(fā)和測試環(huán)境的使用,而kubeadm是一個用于生產(chǎn)環(huán)境的容器編排使用,具有強大且復雜的功能。

3、安裝Docker

需要保證服務(wù)器已經(jīng)安裝Docker,這里不在描述,如果不清楚可以查看以下文章:

https://www.cnblogs.com/sowler/p/18228732

通過上面文章安裝成功后,需要更新 Cgroup Driver 為systemd

# Docker 在默認情況下使用的 Cgroup Driver 為 cgroupfs
# docker info 查看  Cgroup Driver 屬性
Cgroup Driver: cgroupfs
# 在/etc/docker 目錄下 daemon.json文件, 添加配置 exec-opts 屬性
"exec-opts": ["native.cgroupdriver=systemd"]
# 重新啟動docker
systemctl daemon-reload
systemctl restart docker
# 再次執(zhí)行 docker info 查看  Cgroup Driver 屬性
Cgroup Driver: systemd

4、安裝Harbor

Harbor是Docker存儲鏡像的私有化倉庫,有時候因為網(wǎng)絡(luò)問題連接不上Docker Hub 鏡像倉庫,可以搭建私有化倉庫,從私有倉庫進行獲取。不清楚搭建可以查看以下文章:

https://www.cnblogs.com/sowler/p/18242819

如果不想搭建私有化倉庫也可以,需要配置Docker獲取的鏡像源地址,配置為一些開源的鏡像源地址。雖說因為國內(nèi)污點嚴重問題各大廠商關(guān)閉了鏡像源地址,但是還是可以找到一些可以訪問Docker Hub的鏡像源的。以下地址親測有效:

# 在/etc/docker 目錄下創(chuàng)建 daemon.json文件,配置 registry-mirrors 屬性
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io", 
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev"]
}

5、Kubernetes安裝

5.1、Minikube安裝

介紹:

Minikube是一個工具,用于在單個節(jié)點上部署一個本地的Kubernetes集群。這對于開發(fā)者在本地開發(fā)環(huán)境進行Kubernetes應(yīng)用測試和調(diào)試非常有用。它能夠在個人計算機上啟動一個輕量級的虛擬機或容器,并在這個環(huán)境中部署一個完整的Kubernetes集群,包括API服務(wù)器、etcd、kubelet等核心組件。

Minikube 使用文檔:https://minikube.sigs.k8s.io/docs/

Github開源地址:https://github.com/kubernetes/minikube

安裝包下載:https://minikube.sigs.k8s.io/docs/start/?arch=%2Fwindows%2Fx86-64%2Fstable%2F.exe+download

使用文檔:https://kubernetes.io/zh-cn/docs/tutorials/hello-minikube/

啟動和停止集群:

啟動命令:

minikube start --driver=docker

停止:

minikube stop

當停止集群后,所有的容器和服務(wù)都會停止運行,但集群的配置和存儲的數(shù)據(jù)(如果有持久化存儲配置)會保留。

刪除集群:

minikube delete

使用該命令可以刪除整個Minikube集群。這將清除所有與集群相關(guān)的資源,包括虛擬機、容器鏡像等。如果需要重新創(chuàng)建集群,需要再次運行minikube start命令。

5.2、二進制安裝

二進制文件下載地址:https://kubernetes.io/releases/download/#binaries

使用二進制安裝k8s相對來說比較麻煩,需要自己配置一些相關(guān)參數(shù)和啟動腳本。本次不使用該方法配置。感興趣的朋友可以在網(wǎng)上找一些相關(guān)文章進行安裝。

5.3、Kubeadm安裝

5.3.1、介紹

前面已經(jīng)提到了,通過 kubeadm 進行安裝,需要安裝kubeadm、kubeletkubectl三個控件,以下是相關(guān)控件的作用介紹:

  • Kubeadm: 用于快速部署Kubernetes集群的官方工具,主要功能:集群初始化節(jié)點加入刪除、證書管理、組件升級
  • kubectl:kubectl是 Kubernetes 的命令行工具,可以通過它與 Kubernetes 集群進行交互,執(zhí)行各種操作,例如部署應(yīng)用、管理資源(如Pods、Services、Deployments等)、 查看集群狀態(tài)以及調(diào)試問題等。它是與Kubernetes API server通信的主要方式,允許用戶控制和配置集群中的各個組件。
  • Kubelet:Kubelet 是運行在每個Kubernetes節(jié)點上的代理服務(wù),是Kubernetes集群的核心組件之一。它的主要職責是確保該節(jié)點上的Pod按照Kubernetes API Server指定的狀態(tài)正確運行。Kubelet負責接收來自API Server的指令,創(chuàng)建、監(jiān)控和管理Pod及其容器,還負責健康檢查、生命周期管理以及與容器運行時進行交互以執(zhí)行具體容器操作。kubelet就相當于是守護進程,Kubernetes會自動管理,不需要我們做多余的操作。

5.3.2、通過yum安裝

通過yum配置國內(nèi)阿里云開源的k8s鏡像進行部署是相對來說比較簡單的,本篇文章使用yum進行安裝。

安裝前準備工作:檢查服務(wù)器

# 查看防火墻狀態(tài)
 systemctl status firewalld
# 停止、禁用防火墻
 systemctl stop firewalld
 systemctl disable firewalld
 
 # 禁用 SELinux
 vim /etc/selinux/config
 # 設(shè)置 disabled
 SELINUX=disabled
 
# 如果配置了交換內(nèi)存,需要關(guān)閉 Swap
[root@linux-k8s ~]# free -mh
              total        used        free      shared  buff/cache   available
Mem:           3.6G        298M        1.7G        8.9M        1.6G        3.0G
Swap:            0B          0B          0B
# 查看fstab
cat /etc/fstab 
# 刪除或注釋追加的內(nèi)容
/opt/swapdata swap swap defaults 0 0

配置加載內(nèi)核模塊

# 設(shè)置iptables和相關(guān)網(wǎng)絡(luò)配置確保容器網(wǎng)絡(luò)的正確性
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

添加該配置文件確保在系統(tǒng)啟動時加載br_netfilter內(nèi)核模塊。br_netfilter 模塊是 Kubernetes中處理橋接網(wǎng)絡(luò)流量的關(guān)鍵模塊。Kubernetes網(wǎng)絡(luò)模型通常需要通過橋接(bridge)來連接容器和主機網(wǎng)絡(luò),br_netfilter模塊使得這些橋接流量能夠被iptables規(guī)則處理。容器網(wǎng)絡(luò)通常使用Linux橋接來進行通信,如果沒有這個模塊,容器和主機之間的網(wǎng)絡(luò)流量就不能經(jīng)過 iptables規(guī)則處理,可能會導致網(wǎng)絡(luò)隔離和通信問題。因此,啟用 br_netfilter讓 Linux橋接流量能夠經(jīng)過 iptables 規(guī)則進行過濾和管理。

設(shè)置iptables

# 開啟橋接流量的 iptables 處理
cat > /etc/sysctl.d/k8s.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1 
EOF
# net.bridge.bridge-nf-call-ip6tables:是否將橋接的 IPv6 流量傳遞給 ip6tables
# net.bridge.bridge-nf-call-iptables:是否將橋接的 IPv4 流量傳遞給 iptables
# 作用: 這些設(shè)置指示 Linux 內(nèi)核在處理橋接(如容器網(wǎng)絡(luò))的 IPv4 和 IPv6 流量時,將流量傳遞給 iptables 來進行進一步的處理
# 為什么需要:Kubernetes 使用 iptables 來進行網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)和流量控制。如果這些參數(shù)沒有啟用,Kubernetes 的網(wǎng)絡(luò)策略、Pod 網(wǎng)絡(luò)之間的通信和其他流量控制規(guī)則可能無法生效,因為橋接流量不會經(jīng)過 iptables 規(guī)則。啟用這些設(shè)置可以確保容器間的流量會被正確地處理,確保網(wǎng)絡(luò)策略得以實施。

Kubernetes 集群通常使用 Linux 網(wǎng)絡(luò)橋接(如 docker0)和 iptables 來管理容器的網(wǎng)絡(luò)流量。通過加載 br_netfilter 內(nèi)核模塊,并啟用橋接流量經(jīng)過 iptables 的處理,可以確保容器的網(wǎng)絡(luò)流量能夠被適當?shù)囊?guī)則過濾和路由。這是 Kubernetes 網(wǎng)絡(luò)模型正常工作的關(guān)鍵步驟,特別是在涉及到多節(jié)點、Pod 網(wǎng)絡(luò)隔離和網(wǎng)絡(luò)策略時。這些配置確保 Kubernetes 的網(wǎng)絡(luò)組件(如 CNI 插件)能夠正確地實現(xiàn)容器之間的網(wǎng)絡(luò)通信,并且能夠按需進行流量控制和隔離。

配置Yum安裝k8s鏡像源

# 設(shè)置yum安裝k8s鏡像源為阿里云
cat > /etc/yum.repos.d/kubernetes.repo << EOF 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安裝Kubeadm、Kubelet、Kubectl

# 通過yum安裝指定版本的控件
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9
# 輸出以下信息安裝完成
Installed:
  kubeadm.x86_64 0:1.20.9-0                             kubectl.x86_64 0:1.20.9-0                             kubelet.x86_64 0:1.20.9-0                            
Dependency Installed:
  kubernetes-cni.x86_64 0:1.2.0-0                                                                                                                                   
Complete!
# 安裝成功后,查看安裝版本,提示沒有該命令
[root@linux-k8s ~]# kubeadm version
-bash: kubeadm: command not found
# 使用yum下載后,提示沒有該命令,把yum加入環(huán)境變量
# 編輯.bashrc
vim /root/.bashrc
# 添加以下信息
export PATH=$PATH:/usr/bin/yum
# 重新加載
source /root/.bashrc
# 再次查看安裝版本
[root@linux-k8s ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.9", GitCommit:"7a576bc3935a6b555e33346fd73ad77c925e9e4a", GitTreeState:"clean", BuildDate:"2021-07-15T21:00:30Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}
[root@linux-k8s ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.9", GitCommit:"7a576bc3935a6b555e33346fd73ad77c925e9e4a", GitTreeState:"clean", BuildDate:"2021-07-15T21:01:38Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?

Kubeadm 初始化

kubeadm init --apiserver-advertise-address=10.0.4.16 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.9  --service-cidr=172.16.0.0/16  --pod-network-cidr=172.17.0.1/16
--apiserver-advertise-address=10.0.4.16 是主節(jié)點的IP地址,確保其他節(jié)點能夠通過該地址訪問API服務(wù)器,如果為公網(wǎng)地址需要控制臺開放2379 2389 6443端口
--image-repository registry.aliyuncs.com/google_containers 指定了容器鏡像的倉庫地址,Kubernetes默認使用k8s.gcr.io作為鏡像倉庫,由于無法訪問使用了阿里云的鏡像倉庫
--kubernetes-version v1.20.9 安裝的版本,避免版本不匹配引發(fā)潛在的問題,使用特定版本確保在集群中運行的所有組件都是兼容的。
--service-cidr=172.16.0.0/16 集群中的service服務(wù)(如 ClusterIP 類型的服務(wù))分配的地址池, 表示服務(wù)IP會從172.16.0.1到172.16.255.254之間的地址分配
--pod-network-cidr=172.17.0.1/16 設(shè)置Pod網(wǎng)絡(luò)的CIDR地址池,所有Pods將會使用的IP地址范圍,表示Pod網(wǎng)絡(luò)會使用172.17.0.1到172.17.255.254范圍的IP地址。注意:地址池是用于Pod內(nèi)部通信的,需要與選擇的CNI插件相兼容,常見的CNI插件如Calico、Flannel會使用該地址池為Pod分配IP地址,確保Flannel網(wǎng)絡(luò)插件的配置與此CIDR地址池一致。
# service-cidr和pod-network-cidr是配置service、pod網(wǎng)段設(shè)置,可以隨意配置,不沖突即可

初始化報錯

執(zhí)行以下命令解決

yum install -y conntrack
# conntrack是Linux內(nèi)核的一部分,用于跟蹤網(wǎng)絡(luò)連接的狀態(tài)。Kubernetes使用它來實現(xiàn)網(wǎng)絡(luò)策略和連接跟蹤等功能,如果沒有安裝conntrack,則 Kubernetes初始化會失敗
# 驗證 conntrack 是否安裝成功
conntrack -L

去除linux-servertwo警告

# 查看當前主機名:
hostname
# 如果需要更改主機名,執(zhí)行:
hostnamectl set-hostname linux-servertwo 
# 修改/etc/hosts 加入地址映射:
10.0.4.16  linux-servertwo
# 測試是否加入成功:
[root@linux-servertwo ~]# ping linux-servertwo
PING linux-servertwo (10.0.4.16) 56(84) bytes of data.
64 bytes from linux-servertwo (10.0.4.16): icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from linux-servertwo (10.0.4.16): icmp_seq=2 ttl=64 time=0.044 ms
^C
--- linux-servertwo ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms

重置kubeadm重新初始化

# 重置
kubeadm reset -f
#再次執(zhí)行
[root@linux-servertwo ~]# kubeadm init --apiserver-advertise-address=10.0.4.16 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.9  --service-cidr=172.16.0.0/16  --pod-network-cidr=172.17.0.1/16
[init] Using Kubernetes version: v1.20.9
[preflight] Running pre-flight checks
        [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 26.1.3. Latest validated version: 19.03
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher
# 解決以上問題:
# 永久啟用 IP 轉(zhuǎn)發(fā),編輯 /etc/sysctl.conf 文件,添加或修改以下行:
net.ipv4.ip_forward = 1
#然后運行以下命令以應(yīng)用更改:
sudo sysctl -p
# 再次初始化,初始化成功
[root@linux-servertwo ~]# kubeadm init --apiserver-advertise-address=10.0.4.16 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.9  --service-cidr=172.16.0.0/16  --pod-network-cidr=172.17.0.1/16
[init] Using Kubernetes version: v1.20.9
......
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
  export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.0.4.16:6443 --token no9c55.flvu76gcqgk7xqtb \
    --discovery-token-ca-cert-hash sha256:97bc27e3bb67d3d0b7adfca65c934a140ac2c16708bed62f9c49fbd9332cec41 

Kubectl設(shè)置,Kubeadm初始化成功后控制臺會打印這些指令命令,執(zhí)行以下命令:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果集群部署,其它工作節(jié)點需要執(zhí)行join命令加入該節(jié)點,由于本次是單節(jié)點運行,不需要執(zhí)行加入命令。

kubeadm join 10.0.4.16:6443 --token no9c55.flvu76gcqgk7xqtb \
    --discovery-token-ca-cert-hash sha256:97bc27e3bb67d3d0b7adfca65c934a140ac2c16708bed62f9c49fbd9332cec41 
# 該命令初始化成功后控制臺會打印,僅工作節(jié)點執(zhí)行
# 如果后面忘記了join執(zhí)行命令,可以在主節(jié)點執(zhí)行以下命令重新生成
kubeadm token create --print-join-command

查看節(jié)點

[root@linux-servertwo ~]# kubectl get nodes
NAME              STATUS     ROLES                  AGE   VERSION
linux-servertwo   NotReady   control-plane,master   13m   v1.20.9

驗證集群狀態(tài)

# kubectl get cs

出現(xiàn)該報錯是因為是/etc/kubernetes/manifests/下的kube-controller-manager.yamlkube-scheduler.yaml設(shè)置的默認端口是0導致的,注釋掉對應(yīng)的port即可。

# 首先進入 manifests
cd /etc/kubernetes/manifests
# 編輯 kube-controller-manager.yaml
vim kube-controller-manager.yaml
# --port=0的作用是禁用kube-controller-manager啟動HTTP服務(wù)。這種做法可以提高安全性,防止暴露不必要的端點。注釋 - --port=0后, 啟動HTTP服務(wù),會降低安全性。
 spec:
  containers:
  - command:
    - kube-controller-manager
    - --allocate-node-cidrs=true
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --bind-address=127.0.0.1
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --cluster-cidr=172.17.0.1/16
    - --cluster-name=kubernetes
    - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
    - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
    - --controllers=*,bootstrapsigner,tokencleaner
    - --kubeconfig=/etc/kubernetes/controller-manager.conf
    - --leader-elect=true
#    - --port=0
    - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
    - --root-ca-file=/etc/kubernetes/pki/ca.crt
    - --service-account-private-key-file=/etc/kubernetes/pki/sa.key
    - --service-cluster-ip-range=172.16.0.0/16
    - --use-service-account-credentials=true
#  編輯 kube-scheduler.yaml
vim kube-scheduler.yaml
#  注釋 - --port=0
spec:
  containers:
  - command:
    - kube-scheduler
    - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
    - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
    - --bind-address=127.0.0.1
    - --kubeconfig=/etc/kubernetes/scheduler.conf
    - --leader-elect=true
#    - --port=0
# 再次查看集群狀態(tài)
[root@linux-servertwo manifests]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}  

去除master節(jié)點的污點

Kubernetes集群的Master節(jié)點是十分重要的,一個高可用的Kubernetes集群一般會存在3個以上的master節(jié)點,為了保證master節(jié)點的穩(wěn)定性,一般不推薦將業(yè)務(wù)的Pod調(diào)度到master節(jié)點上,本文使用單機部署,所以需要去除master節(jié)點的污點。Kubernetes中默認master節(jié)點是不能調(diào)度任何pod的,如果我們要想單節(jié)點使用k8s,需要提前將主節(jié)點污點去除,官網(wǎng)污點相關(guān)的說明:kubectl taint | Kuberneteshttps://kubernetes.io/zh-cn/docs/reference/kubectl/generated/kubectl_taint/

#執(zhí)行該命令去除master污點
kubectl taint nodes --all node-role.kubernetes.io/master-
# 設(shè)置污點
kubectl taint nodes <node-name> key1=value1:NoSchedule
# 去除污點
kubectl taint nodes <node-name> key1:NoSchedule-
# 查看所有節(jié)點
[root@linux-servertwo manifests]# kubectl get nodes
NAME              STATUS     ROLES                  AGE   VERSION
linux-servertwo   NotReady   control-plane,master   75m   v1.20.9
# 查看節(jié)點詳情:可以查看到節(jié)點設(shè)置的污點信息 Taints: 屬性
kubectl describe node linux-servertwo

配置Label標簽

# 設(shè)置Label
kubectl label node node1 node-role.kubernetes.io/master=
# 移除Label
kubectl label node node1 node-role.kubernetes.io/master-
kubectl label nodes <node-name> node-role.kubernetes.io/control-plane= --overwrite
kubectl label nodes <node-name> node-role.kubernetes.io/master= --overwrite
kubectl label nodes <node-name> node-role.kubernetes.io/node= --overwrite
#查看標簽
kubectl get nodes --show-labels
#查看節(jié)點詳情
kubectl describe node linux-servertwo
# 標簽的命名: Kubernetes 中,角色標簽通常使用 node-role.kubernetes.io/<role> 的格式。
# --overwrite: 如果節(jié)點已經(jīng)有相同的標簽,使用 --overwrite 選項可以覆蓋現(xiàn)有標簽。
# 角色的意義:  control-plane 和 master 通常用于標識控制平面節(jié)點,而 node 用于標識工作節(jié)點。

6、安裝網(wǎng)絡(luò)插件(CNI)

Kubernetes網(wǎng)絡(luò)插件,通常被稱為CNI(Container Network Interface),用于在Kubernetes集群中提供容器之間的網(wǎng)絡(luò)連接和通信功能。CNI 插件是 Kubernetes網(wǎng)絡(luò)架構(gòu)的一個核心部分,它負責為Pod 分配網(wǎng)絡(luò)地址、處理網(wǎng)絡(luò)流量以及為容器提供網(wǎng)絡(luò)隔離。Flannel和Calico是兩種常用的網(wǎng)絡(luò)插件,它們各自具有不同的特點和應(yīng)用場景,他們的作用是讓集群中的不同節(jié)點主機創(chuàng)建的Docker容器都具有全集群唯一的虛擬IP地址,從而使得不同節(jié)點上的容器能夠獲得同屬一個內(nèi)網(wǎng)且不重復的IP地址。

6.1、Flannel的使用場景

Flannel是一個簡單易用的CNI插件,主要聚焦于為Kubernetes提供基本的容器網(wǎng)絡(luò)功能。它的設(shè)計目標是為小到中等規(guī)模的集群提供一種輕量級的網(wǎng)絡(luò)解決方案。Flannel 適用于以下場景:

  • 小型或中型集群或開發(fā)/測試環(huán)境:Flannel通常適用于規(guī)模較小、網(wǎng)絡(luò)拓撲相對簡單的集群。它比較輕量,不需要復雜的配置。適合運行在一個不需要復雜網(wǎng)絡(luò)策略的小型或中型Kubernetes集群。特別適合開發(fā)、測試和實驗環(huán)境。
  • 沒有復雜網(wǎng)絡(luò)策略要求的環(huán)境:Flannel不提供復雜的網(wǎng)絡(luò)策略功能,它的主要目標是為Pod提供基本的IP地址分配和通信能力。對于不需要對網(wǎng)絡(luò)流量進行細粒度控制的環(huán)境,F(xiàn)lannel是一個非常簡單且易于配置的網(wǎng)絡(luò)方案。
  • 低資源消耗的集群:Flannel配置和管理相對簡單,資源消耗較低。它使用VXLAN或UDP作為網(wǎng)絡(luò)后端,通常適合資源受限的環(huán)境。對于資源有限的環(huán)境,如邊緣計算、單機部署或開發(fā)/測試集群,F(xiàn)lannel 的資源消耗較少,能夠滿足基本的網(wǎng)絡(luò)需求。
  • 沒有高性能需求的場景:Flannel 的網(wǎng)絡(luò)性能通常不如 Calico 或 Cilium,因為它使用的是一種簡單的網(wǎng)絡(luò)隧道技術(shù)(如 VXLAN),適合對網(wǎng)絡(luò)性能要求不高的環(huán)境。對于對網(wǎng)絡(luò)延遲和吞吐量要求不高的應(yīng)用,F(xiàn)lannel 是一個合適的選擇。
  • 臨時或?qū)嶒炐约海?/strong>Flannel 可以用來支持那些臨時搭建、沒有高網(wǎng)絡(luò)需求的集群環(huán)境,例如實驗性項目或 POC(概念驗證)集群。

6.2、Calico的使用場景

Calico是一個功能強大的CNI插件,它不僅提供基本的容器網(wǎng)絡(luò)功能,還支持更復雜的網(wǎng)絡(luò)策略和高級功能,如IP路由、網(wǎng)絡(luò)安全、流量控制和負載均衡等。Calico 適用于對網(wǎng)絡(luò)性能、安全性和可擴展性有較高要求的場景。以下是Calico的典型使用場景:

  • 大規(guī)模集群或多集群環(huán)境:Calico 支持大規(guī)模集群的高性能網(wǎng)絡(luò)通信,支持跨多個數(shù)據(jù)中心或云平臺的網(wǎng)絡(luò)連接。它采用高效的路由技術(shù)(如 BGP 和 IP-in-IP),可以應(yīng)對大規(guī)模和復雜的網(wǎng)絡(luò)環(huán)境。如果部署的Kubernetes集群是大規(guī)模的,或者需要跨多個數(shù)據(jù)中心或云區(qū)域部署,Calico 由于其高可擴展性和支持跨節(jié)點的路由,適用于這種大規(guī)模的集群管理。
  • 需要復雜網(wǎng)絡(luò)策略和流量控制的環(huán)境:Calico 提供強大的網(wǎng)絡(luò)策略功能,可以定義細粒度的訪問控制規(guī)則,控制不同 Pod 或命名空間之間的流量。這對于有高安全性要求的應(yīng)用尤為重要。如果需要部署一個嚴格的網(wǎng)絡(luò)安全控制 Kubernetes 集群,或應(yīng)用需要按照訪問控制列表(ACL)進行網(wǎng)絡(luò)隔離和流量管理,Calico 是一個非常合適的選擇。它允許你實現(xiàn)基于 IP、端口、命名空間等層級的精確控制。
  • 需要高網(wǎng)絡(luò)性能的場景:Calico 基于 IP 路由的網(wǎng)絡(luò)架構(gòu)通常比 Flannel 更高效,尤其是在大規(guī)模集群中。它支持 BGP(邊界網(wǎng)關(guān)協(xié)議),提供快速的路由功能和高吞吐量。對于需要低延遲、高吞吐量網(wǎng)絡(luò)性能的應(yīng)用(如大規(guī)模分布式數(shù)據(jù)庫、大數(shù)據(jù)分析平臺等),Calico 提供了更優(yōu)的性能,適用于需要高網(wǎng)絡(luò)性能的生產(chǎn)環(huán)境。
  • 云原生和微服務(wù)架構(gòu):Calico 提供對云原生應(yīng)用、微服務(wù)架構(gòu)的良好支持,尤其是在管理復雜的服務(wù)網(wǎng)格、服務(wù)發(fā)現(xiàn)、負載均衡等方面有很大優(yōu)勢。在構(gòu)建基于微服務(wù)的云原生應(yīng)用時,Calico 的網(wǎng)絡(luò)策略、流量管理功能以及對服務(wù)網(wǎng)格(如 Istio)的支持,可以幫助更好地管理和保護集群中的流量。
  • 混合云或多云環(huán)境:Calico 允許在不同的云環(huán)境(如 AWS、GCP、Azure 等)之間建立虛擬網(wǎng)絡(luò),支持跨云網(wǎng)絡(luò)通信,并能有效管理跨云的網(wǎng)絡(luò)流量。如果需要部署 Kubernetes 集群在一個混合云或多云環(huán)境,需要跨不同云平臺的 Kubernetes 集群進行通信,Calico 可以幫助你實現(xiàn)網(wǎng)絡(luò)跨平臺的統(tǒng)一管理。
  • 需要高可用性和彈性網(wǎng)絡(luò)的場景:Calico 通過支持 BGP 動態(tài)路由和其他冗余機制,提高了網(wǎng)絡(luò)的可靠性和彈性。它能夠自動應(yīng)對節(jié)點故障和網(wǎng)絡(luò)變化,確保集群網(wǎng)絡(luò)的高可用性。對于需要高可用性和自動化恢復的企業(yè)級應(yīng)用或生產(chǎn)環(huán)境,Calico 的高可用網(wǎng)絡(luò)設(shè)計非常適合。
  • Kubernetes 集群與虛擬機混合部署:通過Calico可以在Kubernetes環(huán)境中部署虛擬機,Calico 可以同時支持容器和虛擬機,適用于虛擬化和容器化混合的環(huán)境。

6.3、Flannel與Calico的對比總結(jié)

特性FlannelCalico
網(wǎng)絡(luò)架構(gòu)簡單的 IP 分配和通信高效的路由,支持 BGP
性能性能較低,適用于小規(guī)模集群高性能,適用于大規(guī)模集群
網(wǎng)絡(luò)策略不支持復雜網(wǎng)絡(luò)策略強大的網(wǎng)絡(luò)策略功能
網(wǎng)絡(luò)安全簡單的網(wǎng)絡(luò)隔離強大的安全控制,支持 ACL 和安全組
擴展性適用于小型、中型集群適用于大規(guī)模集群
適用場景小型集群、開發(fā)/測試、臨時集群大規(guī)模集群、企業(yè)級環(huán)境、混合云、多云環(huán)境

所以通過以上應(yīng)用功能對比,如果需要簡單、輕量、易于配置的網(wǎng)絡(luò)方案,適合小型集群、開發(fā)環(huán)境或者臨時集群,可以使用 Flannel。如果需要高性能、大規(guī)模擴展能力以及復雜的網(wǎng)絡(luò)策略,尤其是在生產(chǎn)環(huán)境中對安全性和網(wǎng)絡(luò)隔離有嚴格要求的場景。使用Calico更加合適。

總結(jié):

通過以上分析,由于本篇使用的是單節(jié)點部署,使用Flannel更為合適。

6.4、kube-flannel安裝

Flannel官網(wǎng):https://github.com/flannel-io/flannel#deploying-flannel-manually

下載文件

 wget https://github.com/flannel-io/flannel/releases/download/v0.24.3/kube-flannel.yml

更改網(wǎng)絡(luò)

 # 修改下載的kube-flannel.yml文件
 vim kube-flannel.yml
 
 # 找到net-conf.json屬性,配置Network和初始化的 kubeadm init  --pod-network-cidr=172.17.0.1/16 的IP一致,Backend.Type的類型為vxlan
 net-conf.json: |
    {
      "Network": "172.17.0.1/16",
      "Backend": {
        "Type": "vxlan"
      }
    }

當網(wǎng)絡(luò)插件使用 VXLAN 類型時,它會在每個 Kubernetes 節(jié)點之間創(chuàng)建一個虛擬隧道,允許跨節(jié)點的 Pod 之間進行通信。具體來說,VXLAN 技術(shù)提供以下幾個重要功能:

  • 跨主機網(wǎng)絡(luò)連接:VXLAN 允許 Kubernetes 集群中的 Pod 即使在不同物理主機上,也能直接通信。
  • 可擴展性:VXLAN 支持大規(guī)模的網(wǎng)絡(luò)虛擬化,能夠創(chuàng)建多達 16,777,216 個虛擬網(wǎng)絡(luò)。
  • 網(wǎng)絡(luò)隔離:每個 VXLAN 網(wǎng)絡(luò)都有唯一的標識符(VNI),使得網(wǎng)絡(luò)間相互隔離,不會干擾。

配置成功后,執(zhí)行命令發(fā)布Flannel

[root@linux-servertwo kubernetes]# kubectl apply -f kube-flannel.yml
namespace/kube-flannel created
serviceaccount/flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
You have new mail in /var/spool/mail/root
# 查看是否發(fā)布成功,出現(xiàn) Running 狀態(tài),說明 Flannel 插件安裝成功
[root@linux-servertwo kubernetes]# kubectl get pods -n kube-flannel
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-fvzcp   1/1     Running   0          13s
# 查看節(jié)點狀態(tài) 
[root@linux-servertwo kubernetes]# kubectl get nodes
NAME              STATUS   ROLES                  AGE   VERSION
linux-servertwo   Ready    control-plane,master   24h   v1.20.9
# 通過查看節(jié)點狀態(tài)發(fā)現(xiàn)STATUS列表,由之前的 NotReady 變?yōu)?Ready 說明已經(jīng)正常工作了
# Ready:表示該節(jié)點已經(jīng)成功加入集群,且所有必需的組件正在運行中,能夠正常調(diào)度Pods
# NotReady:表示該節(jié)點出現(xiàn)了問題,無法正常工作,可能是因為網(wǎng)絡(luò)、系統(tǒng)故障或Kubernetes組件沒有啟動成功

查看所有Pod是否啟動成功

# 執(zhí)行命令查看Pod啟動情況:
kubectl get pod -n kube-system

發(fā)現(xiàn)兩個pod未啟動,執(zhí)行以下命令查看失敗的原因(這里是第一次安裝的時候會出現(xiàn)的問題,當進行第二次安裝的時候沒有出現(xiàn)該問題,可能當時是網(wǎng)絡(luò)原因,如果查看Pod啟動情況發(fā)現(xiàn)都啟動成功了,可以不進行配置,這里只做下記錄)

kubectl describe pod coredns-7f89b7bc75-2k74p  -n kube-system

networkPlugin cni failed to set up pod "coredns-7f89b7bc75-2k74p_kube-system" network: loadFlannelSubnetEnv failed: open /run/flannel/subnet.env:no such file or directory

Flannel 的配置文件通常包括子網(wǎng)配置文件(subnet.env),位于/run/flannel/目錄下。如果文件缺失,可能是因為Flannel沒有正確初始化。

# 如果沒有,可以創(chuàng)建一個subnet.env文件, 加入以下信息
[root@linux-servertwo kubernetes]# cat /run/flannel/subnet.env
FLANNEL_NETWORK=172.17.0.0/16
FLANNEL_SUBNET=172.17.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
#FLANNEL_NETWORK:指定整個網(wǎng)絡(luò)范圍。 代表的子網(wǎng)范圍是 172.17.0.0 到 172.17.255.255
#FLANNEL_SUBNET:指定一個子網(wǎng),該子網(wǎng)將被分配給 Flannel 網(wǎng)絡(luò)插件。代表的子網(wǎng)范圍是 172.17.0.0 到 172.17.0.255
#FLANNEL_MTU:指定網(wǎng)絡(luò)的最大傳輸單元(默認為 1450 字節(jié))。
#FLANNEL_IPMASQ:設(shè)置是否啟用 IP 轉(zhuǎn)發(fā)和網(wǎng)絡(luò)地址轉(zhuǎn)換(IP Masquerading),通常啟用

配置成功,我們可以發(fā)現(xiàn)目前所有pod都已經(jīng)啟動了。

Kubenetes移除Flannel

# 刪除 DaemonSet
kubectl delete daemonset kube-flannel-ds-fvzcp -n kube-flannel
# 刪除 ConfigMap
kubectl delete configmap kube-flannel-ds-fvzcp -n kube-flannel
# 刪除 ServiceAccount
kubectl delete serviceaccount flannel -n kube-flannel
# 驗證 DaemonSet 是否已刪除
kubectl get daemonset -n kube-flannel
# 驗證 Pod 是否已刪除
kubectl get pod -n kube-flannel

確認所有Pod啟動成功

當安裝成功Flannel后,最后需要再次確認下所安裝的所有Pod是否全部啟動成功,如果還有啟動失敗的Pod,在找其他方法去解決。

# 執(zhí)行以下命令查看所有命名空間的Pod運行情況
[root@linux-servertwo kubernetes]# kubectl get pod --all-namespaces
NAMESPACE      NAME                                      READY   STATUS    RESTARTS   AGE
kube-flannel   kube-flannel-ds-fvzcp                     1/1     Running   0          18h
kube-system    coredns-7f89b7bc75-5p49z                  1/1     Running   0          42h
kube-system    coredns-7f89b7bc75-6crzd                  1/1     Running   0          42h
kube-system    etcd-linux-servertwo                      1/1     Running   0          42h
kube-system    kube-apiserver-linux-servertwo            1/1     Running   0          42h
kube-system    kube-controller-manager-linux-servertwo   1/1     Running   0          42h
kube-system    kube-proxy-btbwc                          1/1     Running   0          42h
kube-system    kube-scheduler-linux-servertwo            1/1     Running   0          42h
# 可以以上輸出可以發(fā)現(xiàn)所有Pod都已經(jīng)啟動成功了
# READY Pod 中容器的就緒狀態(tài) 格式為:就緒容器數(shù) / 總?cè)萜鲾?shù) ,通過輸出可以發(fā)現(xiàn)都已經(jīng)準備就緒
# STATUS 為:Running,表示 Pod 處于運行狀態(tài)。如果為:CrashLoopBackOff,表示該Pod中的容器因某些錯誤崩潰并且正進入重啟循環(huán)
# RESTARTS  Pod 中容器的重啟次數(shù) 顯示為 0 說明容器沒有重啟,就表示啟動成功了。如果經(jīng)歷了容器多次重啟,可能說明它遇到了錯誤或其他問題。則會顯示一個數(shù)字,表示重啟的次數(shù)

7、部署kubernetes-dashboard

Kubernetes安裝部署成功后,接下來就安裝我們的第一個K8s應(yīng)用kubernetes-dashboard。kubernetes-dashboardK8s官方推薦的圖形化管理工具,它的作用是簡化集群操作,適用于習慣于圖形界面而非命令行的用戶。kubernetes-dashboard是一個基于 Web 的用戶界面,用于管理和監(jiān)控 Kubernetes 集群中的應(yīng)用程序,幫助用戶查看集群的狀態(tài)、管理應(yīng)用程序資源、執(zhí)行常見的管理操作等。

Github官網(wǎng)地址:https://github.com/kubernetes/dashboard

查看版本兼容性

找到和我們安裝k8s的版本所兼容的版本

由于本次下載的是1.20.9,所以找到兼容該版本的dashboard進行下載,在Linux中執(zhí)行以下命令下載上圖中的版本。

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml

默認Dashboard只能集群內(nèi)部訪問,修改ServiceNodePort類型,暴露到外部:

# 在spec中添加配置信息type: NodePort 在ports中加入 nodePort: 31001  # 新增
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort  # 新增
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31001  # 新增
  selector:
    k8s-app: kubernetes-dashboard

發(fā)布應(yīng)用

# 部署應(yīng)用
[root@linux-servertwo kubernetes]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
# 查看是否發(fā)布成功
[root@linux-servertwo kubernetes]# kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-79c5968bdc-tl4gr   1/1     Running   0          37s
kubernetes-dashboard-9f9799597-2spkv         1/1     Running   0          37s
# 查看kubernetes-dashboard命名空間下的暴露端口
[root@linux-servertwo kubernetes]# kubectl get svc -A | grep kubernetes-dashboard
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   172.16.130.109   <none>        8000/TCP                 3m35s
kubernetes-dashboard   kubernetes-dashboard        NodePort    172.16.240.39    <none>        443:31001/TCP            3m35s

查看kubernetes-dashboard命名空間下更為詳細的信息

# 查看kubernetes-dashboard命名空間下更為詳細的信息
[root@linux-servertwo kubernetes]# kubectl get pod,svc -n kubernetes-dashboard -o wide

通過以上查看,可以發(fā)現(xiàn)kubernetes-dashboard 部署成功了,接下來通過瀏覽器訪問31001端口,查看是否可以訪問成功。訪問地址:http://NodeIP:31001

Client sent an HTTP request to an HTTPS server.

通過訪問,瀏覽器頁面報以上錯誤信息,根據(jù)提示加上https:// 進行訪問,地址:https://NodeIP:31001 ,再次訪問

通過查找發(fā)現(xiàn)谷歌的Google Chrome和微軟的Microsoft Edge因為地址不安全,會攔截該地址,使用火狐瀏覽器Firefox可以訪問。訪問成功頁面如下:

通過登錄頁面可以看到,要想進入系統(tǒng)需要進行登錄。登錄系統(tǒng)需要輸入Token信息,下面就來獲取登錄的Token

首先創(chuàng)建用戶

# 執(zhí)行:kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard 創(chuàng)建 service account
[root@linux-servertwo kubernetes]# kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
serviceaccount/dashboard-admin created

給創(chuàng)建的用戶授權(quán)

# 執(zhí)行: kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin 綁定默認cluster-admin管理員集群角色
[root@linux-servertwo kubernetes]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created

獲取用戶Token

# 執(zhí)行:kubectl get secrets -n kubernetes-dashboard | grep dashboard-admin
[root@linux-servertwo kubernetes]# kubectl get secrets -n kubernetes-dashboard | grep dashboard-admin
dashboard-admin-token-29nxl        kubernetes.io/service-account-token   3      5m41s
# 根據(jù)獲取到的 dashboard-admin-token-29nxl 查看詳情
[root@linux-servertwo kubernetes]# kubectl describe secrets dashboard-admin-token-29nxl -n kubernetes-dashboard
Name:         dashboard-admin-token-29nxl
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: 7d9a046c-c6dd-4dfa-affb-b76c1c079521
Type:  kubernetes.io/service-account-token
Data
====
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6ImtZNmxMM2cyTnI2NHVmRGdtU19GbUEyNlhiRHg1THVFWXliZXl2NWQycHMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tMjlueGwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiN2Q5YTA0NmMtYzZkZC00ZGZhLWFmZmItYjc2YzFjMDc5NTIxIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOmRhc2hib2FyZC1hZG1pbiJ9.NBRUjyHXD6zCeiboJP946fOJfWn2dVtC4n7VvfzUH805g4EgaNFM2I4ADN5UUGdfLnKaO71MG1JESYemh1SSkdG8jg7yXWioiSl7pAhZUnhJYNAOgiE-nHA01yCISTTR30CL3OCjx8lkRLPxTRz31DMlqxC8cy4ToPD4iqyDrZOYlZWkGtuFf8SBz-xm4T5SUKvPvl0y8P1ThZw6uD1AhXmCZvH2KveLPm2S_kjoCC3aR5ElcaeU-jbjqcIudxSdLjzLSj11M6jYSc-7hY7zAVYiZF3dCGFDkej3j3eZWPt2lPwjoWSpUdJRqK_eAQMN2wot4l0SpHG0pOS1USNxxw
ca.crt:     1066 bytes

復制token到輸入框

點擊登錄,登錄成功進入首頁面。

8、總結(jié)

關(guān)于Kubernetes的安裝介紹到這里就結(jié)束了,雖然安裝的過程中有點小曲折,但是還算是正常啟動成功了。相對于搭建集群的K8s,使用單節(jié)點安裝確實方便了許多,非常適合新手去學習k8s

?轉(zhuǎn)自https://www.cnblogs.com/sowler/p/18672064



該文章在 2025/4/8 9:50:56 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved