0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Kubernetes 集群及其生態(tài)搭建

科技綠洲 ? 來(lái)源:不加班程序員 ? 作者:不加班程序員 ? 2023-11-01 16:04 ? 次閱讀

上一次接觸到kubernetes集群的時(shí)候已經(jīng)是一年以前了,那個(gè)時(shí)候官方的版本還只是v1.10,而現(xiàn)在過(guò)去一年的時(shí)間了,官方版本已經(jīng)快速的迭代到了v1.17了,社區(qū)也越來(lái)越成熟、相關(guān)的生態(tài)組件也越來(lái)越豐富,可見(jiàn)在過(guò)去的K8S元年,它發(fā)展是多么迅猛。最近想把自己寫(xiě)的一些小東西封裝成開(kāi)放API暴露出來(lái),于是想把自己的幾臺(tái)機(jī)器搞成個(gè)kubernetes集群,所以這里想重溫下集群構(gòu)建的流程。以下的所有文件都可以在Githubhttps://github.com/lateautumn4lin/KubernetesResearchClusterEcology目錄中尋找到

kubernetes集群搭建實(shí)戰(zhàn)

首先要做的是搭建一個(gè)最基本的Kubernetes集群。

準(zhǔn)備階段

準(zhǔn)備階段主要包括兩個(gè)方面,一是準(zhǔn)備好至少兩臺(tái)機(jī)器,做master-worker的集群架構(gòu),二是了解我們需要安裝好哪些軟件才能構(gòu)建最基本的集群。

  1. 機(jī)器配置

這次實(shí)驗(yàn)我選用的是騰訊云的云服務(wù)器CVM,由于我是通過(guò)不同的賬號(hào)購(gòu)買(mǎi)的,所以我選用的機(jī)器之間是通過(guò)外網(wǎng)來(lái)進(jìn)行互通,配置方面的話(huà)選擇官方默認(rèn)的最低配置2核4GB。

服務(wù)器IPCPU內(nèi)存硬盤(pán)系統(tǒng)版本Hostname
192.144.152.232核4GB50GBCent OS 7.6master1
49.233.81.202核4GB50GBCent OS 7.6worker1

  1. 軟件配置
需要安裝的軟件版本
Kubernetesv1.17.x
Docker18.09.7

基本的軟件我們需要安裝Kubernetes與Docker,安裝Kubernetes我們需要使用到其中的Kubeadm與Kubectl工具,Kubeadm是官方推薦的初始化工具,并且在v1.13版本中已經(jīng)正式GA(General Availability)了,也就是說(shuō)可以在生產(chǎn)環(huán)境中使用。而需要Docker是因?yàn)镵ubernetes中的Pod需要使用到CRI(Container Runtime),也就是容器運(yùn)行時(shí),Docker是非常標(biāo)準(zhǔn)且通用的CRI,其他的例如Containerd、CRI-O并且在v1.14版本之后如果你的機(jī)器中有多種CRI,那么Kubernetes也會(huì)默認(rèn)使用Docker的,所以我們這里就選擇Docker。

檢查與配置階段

這個(gè)階段我們主要是檢查我們的服務(wù)器配置以及把我們幾個(gè)服務(wù)器給串聯(lián)起來(lái)。

  1. 修改Hostname,配置Host文件

使用hostnamectl分別對(duì)worker1和master1進(jìn)行hostname的永久性修改,并且配置host,之所以這么做是因?yàn)槲覀円y(tǒng)一給各個(gè)機(jī)器標(biāo)記,這樣我們?cè)谥蟮募汗芾碇心軌蚋玫耐ㄟ^(guò)hostname了解每臺(tái)機(jī)器的作用。

hostnamectl set-hostname master1
echo "127.0.0.1   $(hostname)" > > /etc/hosts
echo "192.144.152.23   master1" > > /etc/hosts
echo "49.233.81.20   worker1" > > /etc/hosts

  1. 檢查CPU核數(shù)與內(nèi)存

這一步我們使用lscpu命令來(lái)查看我們的服務(wù)器的架構(gòu)以及我們系統(tǒng)的內(nèi)核數(shù),因?yàn)槲覀円罱ㄒ粋€(gè)Kubernetes集群,master節(jié)點(diǎn)不能低于2核,這點(diǎn)是必須要保證的,如果內(nèi)核數(shù)過(guò)低會(huì)導(dǎo)致整個(gè)集群的不穩(wěn)定和高延遲。

lscpu
# 請(qǐng)使用 lscpu 命令,核對(duì) CPU 信息
# Architecture: x86_64    本安裝文檔不支持 arm 架構(gòu)
# CPU(s):       2         CPU 內(nèi)核數(shù)量不能低于 2

  1. 檢查網(wǎng)絡(luò)

在所有節(jié)點(diǎn)執(zhí)行命令

[root@master1 ~]# ip route show
default via 172.21.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1002
172.21.0.0/20 dev eth0 proto kernel scope link src 172.21.0.11

[root@master1 ~]# ip address
1: lo:  LOOPBACK,UP,LOWER_UP > mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  BROADCAST,MULTICAST,UP,LOWER_UP > mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 52:54:00:2c:42:7d brd ff:ff:ff:ff:ff:ff
    inet 172.21.0.11/20 brd 172.21.15.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe2c:427d/64 scope link
       valid_lft forever preferred_lft forever

3.1 kubelet使用的IP地址

  • ip route show 命令中,可以知道機(jī)器的默認(rèn)網(wǎng)卡,通常是 eth0,如 default via 172.21.0.1 dev eth0
  • ip address 命令中,可顯示默認(rèn)網(wǎng)卡的 IP 地址,Kubernetes 將使用此 IP 地址與集群內(nèi)的其他節(jié)點(diǎn)通信,如 172.21.0.11
  • 所有節(jié)點(diǎn)上 Kubernetes 所使用的 IP 地址必須可以互通(無(wú)需 NAT 映射、無(wú)安全組或防火墻隔離)

如果兩臺(tái)機(jī)器是在共同的內(nèi)網(wǎng)中可以使用內(nèi)網(wǎng)IP進(jìn)行直接通信,不過(guò)我們這次的機(jī)器是在兩個(gè)不同的騰訊云賬號(hào)之中,彼此內(nèi)網(wǎng)隔離,所以我們直接使用機(jī)器的外網(wǎng)IP進(jìn)行通信,不建議大家在生產(chǎn)環(huán)境中使用。

  1. 配置機(jī)器之間的免登錄

這一步我們要通過(guò)配置各機(jī)器之間的免登錄打通各個(gè)機(jī)器,把各個(gè)機(jī)器串聯(lián)起來(lái),這樣方便于我們之后在各臺(tái)機(jī)器之間的操作。

4.1 每臺(tái)服務(wù)器生成公私鑰

ssh-keygen –t rsa

4.2 將id_rsa.pub追加到授權(quán)的key里面去

cat id_rsa.pub > > authorized_keys

4.3 修改.ssh文件夾和其文件的權(quán)限,并重啟SSH服務(wù)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
service sshd restart

4.4 將.ssh文件夾中三個(gè)文件拷貝到目標(biāo)服務(wù)器

scp ~/.ssh/authorized_keys root@192.144.152.23:~/.ssh/
scp ~/.ssh/id* root@192.144.152.23:~/.ssh/

上面是兩臺(tái)機(jī)器之間如何進(jìn)行免登錄配置,同理可以用于其他某兩臺(tái)機(jī)器。

正式安裝階段

準(zhǔn)備好上面的機(jī)器并且檢查、配置好各個(gè)參數(shù)之后我們就可以開(kāi)始正式安裝了。

  1. 安裝Kubelet以及Docker

切換到ClusterEcology目錄中,可以看到install_kubelet.sh腳本,使用如下命令快速安裝。

cat install_kubelet.sh | sh -s 1.17.2

我們快速看看這個(gè)腳本中的代碼,了解具體每一步的作用

#!/bin/bash
# 在 master 節(jié)點(diǎn)和 worker 節(jié)點(diǎn)都要執(zhí)行
# 安裝 docker
# 參考文檔如下
# https://docs.docker.com/install/linux/docker-ce/centos/
# https://docs.docker.com/install/linux/linux-postinstall/

# 卸載舊版本
yum remove -y docker 
docker-client 
docker-client-latest 
docker-common 
docker-latest 
docker-latest-logrotate 
docker-logrotate 
docker-selinux 
docker-engine-selinux 
docker-engine

# 設(shè)置 yum repository
yum install -y yum-utils 
device-mapper-persistent-data 
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安裝并啟動(dòng) docker
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
systemctl enable docker
systemctl start docker

# 安裝 nfs-utils
# 必須先安裝 nfs-utils 才能掛載 nfs 網(wǎng)絡(luò)存儲(chǔ)
yum install -y nfs-utils
yum install -y wget

# 關(guān)閉 防火墻
systemctl stop firewalld
systemctl disable firewalld

# 關(guān)閉 SeLinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# 關(guān)閉 swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab

# 修改 /etc/sysctl.conf
# 如果有配置,則修改
sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
# 可能沒(méi)有,追加
echo "net.ipv4.ip_forward = 1" > > /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" > > /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" > > /etc/sysctl.conf
# 執(zhí)行命令以應(yīng)用
sysctl -p

# 配置K8S的yum源
cat <

執(zhí)行如上的命令之后,如果執(zhí)行正確的話(huà)我們會(huì)得到Docker的版本信息

Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        2d0083d
 Built:             Thu Jun 27 17:56:06 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       2d0083d
  Built:            Thu Jun 27 17:26:28 2019
  OS/Arch:          linux/amd64
  Experimental:     false

  1. 初始化 master 節(jié)點(diǎn)

切換到ClusterEcology目錄中,可以看到init_master.sh腳本,我們首先配置好環(huán)境變量,然后使用執(zhí)行腳本快速安裝。

# 只在 master 節(jié)點(diǎn)執(zhí)行
# 替換 x.x.x.x 為 master 節(jié)點(diǎn)實(shí)際 IP(生產(chǎn)請(qǐng)使用內(nèi)網(wǎng) IP)
# export 命令只在當(dāng)前 shell 會(huì)話(huà)中有效,開(kāi)啟新的 shell 窗口后,如果要繼續(xù)安裝過(guò)程,請(qǐng)重新執(zhí)行此處的 export 命令
export MASTER_IP=192.144.152.23
# 替換 apiserver.demo 為 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器組所在的網(wǎng)段,該網(wǎng)段安裝完成后,由 kubernetes 創(chuàng)建,事先并不存在于您的物理網(wǎng)絡(luò)中
export POD_SUBNET=10.100.0.1/16
echo "${MASTER_IP}    ${APISERVER_NAME}" > > /etc/hosts
cat init_master.sh | sh -s 1.17.2

  1. 檢查 master 初始化結(jié)果

上一步安裝好之后我們要檢驗(yàn)Kubernetes集群的成果,按下面的命令進(jìn)行執(zhí)行。

# 只在 master 節(jié)點(diǎn)執(zhí)行

# 執(zhí)行如下命令,等待 3-10 分鐘,直到所有的容器組處于 Running 狀態(tài)
watch kubectl get pod -n kube-system -o wide

# 查看 master 節(jié)點(diǎn)初始化結(jié)果
kubectl get nodes -o wide

如果成功的話(huà)可以看到以下輸出

[root@master1 dashboard]# kubectl get nodes -o wide
NAME      STATUS   ROLES    AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
master1   Ready    master   7h26m   v1.17.2   172.21.0.11   < none >        CentOS Linux 7 (Core)   3.10.0-862.el7.x86_64   docker://18.9.7

表示我們的集群中master節(jié)點(diǎn)已經(jīng)正式可用

  1. 獲得 join命令參數(shù)

下面我們要將我們的其余worker節(jié)點(diǎn)加入集群,worker加入集群需要得到整個(gè)集群的token和ca證書(shū),我們首先需要在master節(jié)點(diǎn)上面去獲取,包括加入的token和ca證書(shū)。

kubeadm token create --print-join-command
# 我們會(huì)得到如下輸出,這是我們加入集群的憑證
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

  1. 初始化 worker節(jié)點(diǎn)

針對(duì)所有的 worker 節(jié)點(diǎn)執(zhí)行

# 只在 master 節(jié)點(diǎn)執(zhí)行
# 替換 x.x.x.x 為 master 節(jié)點(diǎn)實(shí)際 IP(生產(chǎn)請(qǐng)使用內(nèi)網(wǎng) IP)
# export 命令只在當(dāng)前 shell 會(huì)話(huà)中有效,開(kāi)啟新的 shell 窗口后,如果要繼續(xù)安裝過(guò)程,請(qǐng)重新執(zhí)行此處的 export 命令
export MASTER_IP=192.144.152.23
# 替換 apiserver.demo 為 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
echo "${MASTER_IP}    ${APISERVER_NAME}" > > /etc/hosts
# 替換為 master 節(jié)點(diǎn)上 kubeadm token create 命令的輸出
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

加入之后我們?cè)偈褂孟旅娴拿顏?lái)查看worker是否正確加入集群

kubectl get nodes

  1. 查看集群整體的狀況

查看集群整體狀況只能在master節(jié)點(diǎn)執(zhí)行如下命令

kubectl get nodes -o wide

可以看到如下的輸出,集群都Ready就表示節(jié)點(diǎn)可用

[root@master1 ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master1   Ready    master   5m3s    v1.17.2
worker1   Ready    < none >   2m26s   v1.17.2

生態(tài)組件構(gòu)建

安裝好Kubernetes集群之后,我們得到的只是一個(gè)最基本的集群,還有很多問(wèn)題我們沒(méi)有解決,比如說(shuō)我們想要通過(guò)可視化的方式通過(guò)頁(yè)面點(diǎn)擊的方式來(lái)操作整個(gè)集群,或者說(shuō)我們想要一個(gè)類(lèi)似于Python中的pip那樣的包管理工具那樣利用類(lèi)似工具來(lái)管理我們部署在Kubernetes集群的應(yīng)用,再或者我們想要讓我們的集群和外網(wǎng)能夠進(jìn)行很方便的通信等等,所以這就需要我們利用其它的組件來(lái)不斷完善我們的Kubernetes生態(tài)。

我們選用的是如下的軟件

需要安裝的軟件版本
Kubernetes Dashboardv2.0.3
Helmv3.0.3
Traefikxxx
metrics-serverxxx

  1. Dashboard插件

安裝Dashboard是因?yàn)樗且粋€(gè)綜合性的管理平臺(tái),也是屬于Kubernetes 的官方項(xiàng)目,具體可以在這個(gè)倉(cāng)庫(kù)去看https://github.com/kubernetes/dashboard,雖然之前Dashboard因?yàn)椴僮鞑蝗诵曰缑娉蠖鴱V泛被人詬病,但是經(jīng)過(guò)Kubernetes Dashboard團(tuán)隊(duì)半年多閉關(guān)研發(fā),Dashboardv2.0版本新鮮出爐,界面和操作性也有很大提升,也是官方推薦的管理界面之一。

1.1 Dashboard插件安裝

具體的部署方案我根據(jù)官方的方案整理成了幾個(gè)Yaml文件,項(xiàng)目都在目錄ClusterEcology/InitDashboard下面

kubectl apply -f k8s-dashboard-rbac.yaml
kubectl apply -f k8s-dashboard-configmap-secret.yaml
kubectl apply -f k8s-dashboard-deploy.yaml
kubectl apply -f k8s-dashboard-metrics.yaml
kubectl apply -f k8s-dashboard-token.yaml

執(zhí)行好上面的命令之后Dashboard的服務(wù)以及用戶(hù)基本已經(jīng)創(chuàng)建好,下面我們需要獲取用戶(hù)token來(lái)登錄我們的Dashboard

1.2 獲取用戶(hù)Token

kubectl describe secret/$(kubectl get secret -n kube-system |grep admin|awk '{print $1}') -n kube-system

1.3 檢查服務(wù)是否可用

在之前的Yaml文件中設(shè)置了NodePort端口為31001和類(lèi)型為NodePort方式訪(fǎng)問(wèn) Dashboard,所以訪(fǎng)問(wèn)地址:https://192.144.152.23:31001/ 進(jìn)入 Kubernetes Dashboard頁(yè)面,然后輸入上一步中創(chuàng)建的ServiceAccount的Token進(jìn)入 Dashboard,可以看到新的Dashboard。

圖片

輸入Token我們可以看到Dashboard的界面,如下所示是正常的Dashboard界面

圖片

  1. Helm組件

Helm組件的產(chǎn)生也是源于一個(gè)關(guān)鍵痛點(diǎn),就是我們雖然已經(jīng)部署好Kubernetes集群環(huán)境,但是每個(gè)微服務(wù)也得維護(hù)一套Yaml文件,而且每個(gè)環(huán)境下的配置文件也不太一樣,所以想要重新部署新的環(huán)境或者做環(huán)境移植的成本是真的很高。如果我們能使用類(lèi)似于yum那樣的工具來(lái)安裝我們的應(yīng)用的話(huà)豈不是會(huì)方便很多?基于這點(diǎn),Helm就誕生了,從此讓Kubernetes集群擁有一個(gè)正式的應(yīng)用市場(chǎng)

舊版本Helm整體分為兩個(gè)部分,包括Helm Client和Tiller Server,Helm Client主要是用戶(hù)命令行工具,負(fù)責(zé)管理用戶(hù)自定義的包文件,而Tiller Server服務(wù)接受Client的請(qǐng)求并且解析請(qǐng)求之后與Kubernetes集群進(jìn)行交互。

而新版本,也就是Helm3之后,Helm移除了Tiller組件,使用Helm命令會(huì)直接使用了kubeconfig來(lái)與Kubernetes集群通信,這樣就可以做更細(xì)粒度的權(quán)限控制,這樣方便了完成和使用,另一個(gè)好處是Release name范圍縮小至Namespace,這樣就能夠保證不同的NameSpace可以使用相同的Release name。

2.1 Helm Client組件安裝

我們首先要去官網(wǎng)https://github.com/kubernetes/helm/releases下載Helm的壓縮包。

圖片

解壓后將可執(zhí)行文件Helm拷貝到/usr/local/bin目錄下即可,這樣Helm客戶(hù)端就在這臺(tái)機(jī)器上安裝完成了。

cp helm /usr/local/bin/

2.2 Helm使用

初始化Helm

helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
helm repo add seldon https://storage.googleapis.com/seldon-charts
helm repo update

安裝一個(gè)最簡(jiǎn)單的服務(wù)

helm install seldon-core seldon/seldon-core-operator

可以看到Helm已經(jīng)和Kubernetes集群交互從而生成一個(gè)seldon-core的服務(wù)了

[root@master1 linux-amd64]# helm install seldon-core seldon/seldon-core-operator
NAME: seldon-core
LAST DEPLOYED: Tue Feb  4 22:43:58 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@master1 linux-amd64]# helm list
NAME       	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART                     	APP VERSION
seldon-core	default  	1       	2020-02-04 22:43:58.232906547 +0800 CST	deployed	seldon-core-operator-1.0.1

  1. Traefik組件

3.1 Traefik組件安裝

Traefik是另一個(gè)Kubernetes集群中必備的組件,可以把它認(rèn)為是Nginx的替代品,做一個(gè)統(tǒng)一網(wǎng)關(guān)的管理工具,它的優(yōu)點(diǎn)也是有幾個(gè)方面,比如有漂亮的dashboard 界面、可基于容器標(biāo)簽進(jìn)行配置、新添服務(wù)簡(jiǎn)單,不用像 nginx 一樣復(fù)雜配置,并且不用頻繁重啟等等,雖然性能方面和Nginx會(huì)有些許差距,但是作為個(gè)人使用的話(huà),還是很讓人愛(ài)不釋手的。

  1. metrics-server插件

metrics-server是Kubernetes 官方的集群資源利用率信息收集器,是Heapster瘦身后的替代品。metrics-server收集的是集群內(nèi)由各個(gè)節(jié)點(diǎn)上kubelet暴露出來(lái)的利用率信息,算是集群中基礎(chǔ)的監(jiān)控信息了,主要是提供給例如調(diào)度邏輯等核心系統(tǒng)使用。

git clone https://github.com/kubernetes-incubator/metrics-server.git
cd metrics-server/
kubectl create -f deploy/1.8+/

安裝成功后,過(guò)一段時(shí)間我們就可以在Dashboard中看到具體的監(jiān)控信息了

圖片

疑難故障分析

有關(guān)于Kubernetes集群的疑難故障主要分為幾類(lèi):

(1)資源調(diào)度類(lèi)

(2)網(wǎng)絡(luò)通信類(lèi)

(3)配置參數(shù)類(lèi)

大多數(shù)問(wèn)題都是圍繞這三點(diǎn)來(lái)進(jìn)行的(不全是,大佬勿噴),下面列舉我這次安裝中某些問(wèn)題,有些問(wèn)題在此次安裝中沒(méi)有涉及到,所以以后涉及到的話(huà)會(huì)講解。

  1. 節(jié)點(diǎn)不允許被調(diào)度

我們?cè)诎惭b過(guò)程中會(huì)遇到下面這個(gè)問(wèn)題

1 node(s) had taints that the pod didn't tolerate

這個(gè)表示某個(gè)節(jié)點(diǎn)被標(biāo)記為不可調(diào)度,這個(gè)是K8S官方默認(rèn)的,因?yàn)檫@個(gè)是確保Master節(jié)點(diǎn)不會(huì)被調(diào)度到額外的容器從而消耗資源,不過(guò)我們這個(gè)實(shí)驗(yàn)中可以設(shè)置所有節(jié)點(diǎn)允許調(diào)度來(lái)避免出現(xiàn)這個(gè)問(wèn)題。

kubectl taint nodes --all node-role.kubernetes.io/master-

  1. 鏡像問(wèn)題

按照上面的安裝步驟理論上是可以完全正確的部署好K8S集群的,不過(guò)安裝速度會(huì)根據(jù)網(wǎng)速的情況有差異,我在安裝的時(shí)候也安裝了一個(gè)多小時(shí),原因也是因?yàn)殓R像下載的慢,當(dāng)我們看到某些pod一直在pending的時(shí)候,我們可以通過(guò)如下命令查看具體的情況。

kubectl describe pod calico-node-ndwqv -n kube-system

使用到describe命令來(lái)查看具體組件的情況,雖然也可以使用logs命令來(lái)查看,不過(guò)不如describe方便。

  1. Chrome 您的連接不是私密連接

創(chuàng)建好Dashboard之后,第一次通過(guò)Chrome登錄Dashboard我們會(huì)發(fā)現(xiàn)報(bào)出這個(gè)錯(cuò)誤您的連接不是私密連接,這個(gè)是由于Chrome最新版本的錯(cuò)誤導(dǎo)致,我們修改啟動(dòng)參數(shù)就可以了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8866

    瀏覽量

    84963
  • 機(jī)器
    +關(guān)注

    關(guān)注

    0

    文章

    773

    瀏覽量

    40662
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    491

    瀏覽量

    22015
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    223

    瀏覽量

    8677
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    阿里云上Kubernetes集群聯(lián)邦

    檔演示搭建一個(gè)杭州和北京的kubernetes集群組成集群聯(lián)邦,其中杭州集群作為聯(lián)邦的控制平面準(zhǔn)備域名Federation使用域名將不同子
    發(fā)表于 03-12 17:10

    kubernetes集群配置

    基于v1104版本手動(dòng)搭建高可用kubernetes 集群
    發(fā)表于 08-19 08:07

    kubernetes v112二進(jìn)制方式集群部署

    kubernetes v112 二進(jìn)制方式集群部署
    發(fā)表于 05-05 16:30

    請(qǐng)問(wèn)鴻蒙系統(tǒng)上可以部署kubernetes集群嗎?

    鴻蒙系統(tǒng)上可以部署kubernetes集群
    發(fā)表于 06-08 11:16

    如何部署基于Mesos的Kubernetes集群

    的內(nèi)核。把Kubernetes運(yùn)行在Mesos集群之上,可以和其他的框架共享集群資源,提高集群資源的利用率。 本文是Kubernetes和M
    發(fā)表于 10-09 18:04 ?0次下載
    如何部署基于Mesos的<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    淺談Kubernetes集群的高可用方案

    Kubernetes作為容器應(yīng)用的管理中心,通過(guò)對(duì)Pod的數(shù)量進(jìn)行監(jiān)控,并且根據(jù)主機(jī)或容器失效的狀態(tài)將新的Pod調(diào)度到其他Node上,實(shí)現(xiàn)了應(yīng)用層的高可用性。針對(duì)Kubernetes集群,高可用性
    發(fā)表于 10-11 10:04 ?1次下載
    淺談<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的高可用方案

    從零開(kāi)始搭建Kubernetes集群步驟

    雖然網(wǎng)上有大量從零搭建 K8S 的文章,但大都針對(duì)老版本,若直接照搬去安裝最新的 1.20 版本會(huì)遇到一堆問(wèn)題。故此將我的安裝步驟記錄下來(lái),希望能為讀者提供 copy and paste 式的集群
    的頭像 發(fā)表于 09-01 14:33 ?3756次閱讀
    從零開(kāi)始<b class='flag-5'>搭建</b><b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>步驟

    Kubernetes集群發(fā)生網(wǎng)絡(luò)異常時(shí)如何排查

    本文將引入一個(gè)思路:“在 Kubernetes 集群發(fā)生網(wǎng)絡(luò)異常時(shí)如何排查”。文章將引入 Kubernetes 集群中網(wǎng)絡(luò)排查的思路,包含網(wǎng)絡(luò)異常模型,常用工具,并且提出一些案例以供學(xué)
    的頭像 發(fā)表于 09-02 09:45 ?4623次閱讀

    Kubernetes 集群的功能

    Telepresence 是一個(gè)開(kāi)源工具,可讓您在本地運(yùn)行單個(gè)服務(wù),同時(shí)將該服務(wù)連接到遠(yuǎn)程 Kubernetes 集群
    的頭像 發(fā)表于 09-05 10:58 ?1021次閱讀

    Kubernetes集群的關(guān)閉與重啟

    在日常對(duì) Kubernetes 集群運(yùn)行維護(hù)的過(guò)程中,您可能需要臨時(shí)的關(guān)閉或者是重啟 Kubernetes 集群對(duì)集群進(jìn)行維護(hù),本文將介紹如
    的頭像 發(fā)表于 11-07 09:50 ?9699次閱讀

    在樹(shù)莓派上搭建Kubernetes智能邊緣集群

    電子發(fā)燒友網(wǎng)站提供《在樹(shù)莓派上搭建Kubernetes智能邊緣集群.zip》資料免費(fèi)下載
    發(fā)表于 12-09 09:20 ?2次下載
    在樹(shù)莓派上<b class='flag-5'>搭建</b><b class='flag-5'>Kubernetes</b>智能邊緣<b class='flag-5'>集群</b>

    Kubernetes集群部署

    Kubeadm是一種Kubernetes集群部署工具,通過(guò)kubeadm init命令創(chuàng)建master節(jié)點(diǎn),通過(guò) kubeadm join命令把node節(jié)點(diǎn)加入到集群
    的頭像 發(fā)表于 02-15 10:35 ?1610次閱讀

    基于Kubernetes集群的typecho博客搭建方案

    Kubernetes提供了強(qiáng)大的高可用性特性,它可以自動(dòng)管理和調(diào)度容器實(shí)例,確保應(yīng)用程序在集群中始終可用。還可以監(jiān)控和自動(dòng)修復(fù)故障的容器實(shí)例,提高博客的穩(wěn)定性和可靠性。
    發(fā)表于 10-30 10:02 ?363次閱讀
    基于<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>的typecho博客<b class='flag-5'>搭建</b>方案

    使用Velero備份Kubernetes集群

    Velero 是 heptio 團(tuán)隊(duì)(被 VMWare 收購(gòu))開(kāi)源的 Kubernetes 集群備份、遷移工具。
    的頭像 發(fā)表于 08-05 15:43 ?293次閱讀
    使用Velero備份<b class='flag-5'>Kubernetes</b><b class='flag-5'>集群</b>

    Kubernetes集群搭建容器云需要幾臺(tái)服務(wù)器?

    Kubernetes集群搭建容器云需要幾臺(tái)服務(wù)器?至少需要4臺(tái)服務(wù)器。搭建容器云所需的服務(wù)器數(shù)量以及具體的搭建步驟,會(huì)根據(jù)所選用的技術(shù)棧、業(yè)
    的頭像 發(fā)表于 10-21 10:06 ?60次閱讀