欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你在virtualBox搭建一個(gè)本地kubernets集群?jiǎn)栴}

 更新時(shí)間:2022年01月11日 12:11:37   作者:reisaru  
這篇文章主要介紹了virtualBox搭建一個(gè)本地kubernets集群,本文分步驟通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下

1. 虛擬機(jī)準(zhǔn)備工作

1.1 下載centos7的鏡像

注意centos8不支持kubeadm,血淚教訓(xùn)。也不要下mini會(huì)無法使用界面。http://mirrors.aliyun.com/centos/7/isos/x86_64/
安裝不要使用最小化安裝,不然接下來安裝增強(qiáng)功能不方便。

systemctl stop firewalld && systemctl disable firewalld

1.2 關(guān)閉sawp內(nèi)存空間

在安裝K8S集群時(shí),Linux的Swap內(nèi)存交換機(jī)制是一定要關(guān)閉的,否則會(huì)因?yàn)閮?nèi)存交換而影響性能以及穩(wěn)定性。這里,我們可以提前進(jìn)行設(shè)置:

  • 執(zhí)行swapoff -a可以臨時(shí)關(guān)閉,但系統(tǒng)重啟后會(huì)恢復(fù)
  • 編輯/etc/fstab,注釋掉包含swap那一行就可以永久關(guān)閉了,可以執(zhí)行如下命令注釋掉該行:
sed -i '/ swap / s/^/#/' /etc/fstab

1.3 關(guān)閉 SeLinux

  • 執(zhí)行setenforce 0可以臨時(shí)關(guān)閉
  • 永久關(guān)閉需要修改/etc/sysconfig/selinux的文件設(shè)置
sed -i '/SELINUX=e\|SELINUX=p\|SELINUX=d/c\SELINUX=disabled' /etc/sysconfig/selinux

1.4 配置橋接模式

橋接模式相當(dāng)于假設(shè)了一個(gè)虛擬網(wǎng)卡,把虛擬機(jī)加入宿主機(jī)所在的網(wǎng)卡區(qū)域,所以界面名稱是宿主機(jī)的網(wǎng)卡名字。

可以在網(wǎng)絡(luò)和internet設(shè)置

然后查看現(xiàn)在正在使用的網(wǎng)卡

通過關(guān)閉網(wǎng)卡發(fā)現(xiàn),實(shí)際上是ens8在做網(wǎng)橋,和外界通訊。

其中centos的網(wǎng)卡配置文件目錄:cd /etc/sysconfig/network-scripts/,我們需要改的是vi /etc/sysconfig/network-scripts/ifcfg-enp0s8,把下面的內(nèi)容輸入。(經(jīng)測(cè)試無關(guān))

BOOTPROTO="static"
 
IPADDR=192.168.0.50
GATEWAY=192.168.0.1
DNS1=192.168.0.1
DNS2=8.8.8.8
NETMASK=255.255.255.0

宿主機(jī)可以ping虛擬機(jī),但是虛擬機(jī)無法ping宿主機(jī)。

重啟網(wǎng)絡(luò)

1.5 安裝增強(qiáng)功能

參考我上一篇博客: http://www.dbjr.com.cn/article/234291.htm

1.6 XSHELL連接SSH

為了防止需要x11,所以需要去vi /etc/sudoers增加一個(gè)修改Defaults env_keep="DISPLAY XAUTHORITY"

2. 安裝docker

2.1 卸載舊的docker版本

首先是參考官網(wǎng)的步驟https://docs.docker.com/engine/install/centos/#prerequisites
先卸載舊版本:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.2 配置阿里的鏡像倉庫

sudo yum install -y yum-utils
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.3 安裝最新版本的 Docker Engine 和 containerd

這一步可能會(huì)遇到問題和podman沖突,podman是redhat用來取代docker的打包工具,因此直接移除就好:

yum erase podman buildah
sudo yum install docker-ce docker-ce-cli containerd.io

2.4 啟動(dòng)docker并且用helloWord測(cè)試,如果成功可以在結(jié)果看到提示你正確安裝:

sudo systemctl start docker
sudo docker run hello-world

設(shè)計(jì)開啟啟動(dòng),并且測(cè)試完移除容器

systemctl enable docker

2.5 避免和kubelet的沖突

docker info|grep cgroup檢視,如果docker使用的Cgroup Driver為cgroupfs。則有可能跟kubelet沖突,需要改為一致的systemd
,先vi /etc/docker/daemon.json,在檔案中新增如下程式碼,重啟docker即可systemctl restart docker

{
	"exec-opts": ["native.cgroupdriver=systemd"]
}

3. 安裝kubernetes

我們利用kubernetes官方提供的kubeadm工具來安裝kubernetes集群,官方文檔可以參考:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

3.2 配置kubernetes的yum源

這里使用阿里云的鏡像倉庫,之前使用過騰訊的鏡像倉庫,報(bào)過404的錯(cuò)誤,其實(shí)應(yīng)該是鏡像倉庫源錯(cuò)誤。

Errors during downloading metadata for repository 'kubernetes':
  - Status code: 404 for https://mirrors.cloud.tencent.com/kubernetes/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml.asc (IP: 120.196.204.237)
  - Status code: 404 for https://mirrors.cloud.tencent.com/kubernetes/yum/doc/yum-key.gpg (IP: 120.196.204.75)
錯(cuò)誤:為倉庫 'kubernetes' 獲取 GPG 密鑰失敗 : Status code: 404 for https://mirrors.cloud.tencent.com/kubernetes/yum/doc/yum-key.gpg (IP: 120.196.204.75)

還有就是阿里云的倉庫參考的博主的也是失敗的,最新的找到了這個(gè):

# 配置k8s阿里云源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安裝組件(需要指定版本,我試過最新的版本或者1.18.4鏡像倉庫都下載失?。?/p>

yum install kubectl-1.20.0 kubeadm-1.20.0 kubelet-1.20.0 -y

3.3 啟動(dòng) kubelet

systemctl enable kubelet && systemctl start kubelet

3.4 設(shè)置主機(jī)名

然后復(fù)制若干份,給每個(gè)主機(jī)設(shè)置名字:

hostnamectl set-hostname k8s-master2

3.5 規(guī)劃集群網(wǎng)絡(luò)

注意這里hosts的名字要和上面的主機(jī)名一致,不然待會(huì)兒建設(shè)集群會(huì)報(bào)錯(cuò)Could not resolve host: mirrors.aliyun.com; 未知的錯(cuò)誤

vi /etc/hosts

192.168.0.104 k8s-master1
192.168.0.105 k8s-master2
192.168.0.106 k8s-node1
192.168.0.107 k8s-node2

然后給每個(gè)節(jié)點(diǎn)設(shè)置靜態(tài)IP,不然每次重啟都不一樣,再重啟網(wǎng)絡(luò)組件,注意我這里的內(nèi)核版本是centos8.0,所以網(wǎng)絡(luò)組件不是network,改動(dòng)的加進(jìn)去的靜態(tài)IP部分都是根據(jù)我本機(jī)電腦的IP得來的。DNS要設(shè)置,不然可能會(huì)出現(xiàn)之后使用鏡像下載失敗的問題

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

DNS1=8.8.8.8
DNS2=8.8.4.4
IPV6_PRIVACY=no
OXY_METHOD="none"
BROWSER_ONLY="no"
############改動(dòng)部分開始############
#動(dòng)態(tài)IP
#BOOTPROTO="dhcp"

#靜態(tài)IP
BOOTPROTO="static"
IPADDR=192.168.0.104
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
############改動(dòng)部分結(jié)束############
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="73ab5a69-9070-4c5a-a0b9-c5a6250af943"
DEVICE="enp0s3"
ONBOOT="yes"


nmcli c reload
nmcli c up enp0s3

此時(shí)集群的主機(jī)可以互相ping通,但是虛擬機(jī)ping主機(jī)無法ping通。

1.依次打開【控制面板】-【W(wǎng)indows Definder防火墻】-【高級(jí)設(shè)置】-【入站規(guī)則】-【按配置文件篩選】-【按公有配置文件篩選】

2.拉到最下面,找到并啟用文件類型為“公用”的“文件和打印共享(回顯請(qǐng)求 – ICMPv4-In)”規(guī)則,此時(shí)就可以ping通了。

3.6 初始化一臺(tái)機(jī)器的master節(jié)點(diǎn)

驗(yàn)收標(biāo)準(zhǔn): kubectl get node -n kube-system可以看到輸出的結(jié)果
安裝方式: kubeadm init \ --apiserver-advertise-address=192.168.0.104\ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.20.0 \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
可以在后面跟上:--ignoer-preflight-errors=all

安裝之前的驗(yàn)證:

  • kubeadm init --dry-run,可以不需要實(shí)際部署但是走一遍init的流程,可以看看有沒有錯(cuò)誤并且看到官方推薦的版本,也可以看到安裝之后下一步要做什么,看到會(huì)給我們創(chuàng)建CA證書和通過yaml創(chuàng)建etcd等資源,/etc/kubernetes下面可以看到正常的資源。
  • 通過kubeadm config images list --kubernetes-version 1.18.4 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers驗(yàn)證資源能不能正常拉下來,注意備注kubernets版本是為了避免從墻外拉。國(guó)內(nèi)鏡像地址參考
  1. 選項(xiàng)–pod-network-cidr=10.244.0.0/16,指定了pod的子網(wǎng)劃分地址。因?yàn)楹竺嬉褂胒lannel網(wǎng)絡(luò)插件,所以這里要指定flannel規(guī)定的cidr地址。
  2. 選項(xiàng)–image-repository=“registry.cn-hangzhou.aliyuncs.com/google_containers”,指定了容器鏡像的倉庫地址。
  3. 選項(xiàng)–apiserver-advertise-address=192.168.0.12,表示api-server綁定的網(wǎng)卡地址,這里就是當(dāng)前k8s-master這個(gè)節(jié)點(diǎn)的IP地址.

或者將配置文件保存下來kubeadm config print init-defaults > kubeadm.conf,方便修改和查看。然后主要也是改images-repository,驗(yàn)證的話kubeadm config images pull --config kubeadm.conf

安裝錯(cuò)版本了需要撤銷init才能重新部署,此時(shí)通過kubeadm reset完成,重置過程不會(huì)重置或清除 iptables 規(guī)則或 IPVS 表,可以看重置后的提示,不過我們剛剛初始化直接reset就行。

配置kubeconfig:

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

3.7 讓子節(jié)點(diǎn)加入

3.71 加入子節(jié)點(diǎn)

只需要在子節(jié)點(diǎn)跑下面的命令就行啦,這個(gè)是上面init提示的:

kubeadm join k8smaster.com:6443 --token pdas2m.fkgn8q7mz5u96jm6 --discovery-token-ca-cert-hash sha256:6fd9b1bf2d593d2d4f550cd9f1f596865f117fef462db42860228311c2712b8b

如果沒有記錄可以通過kubeadm token list查看,如果沒有輸出說明上個(gè)token已經(jīng)過期了,直接生成新的kubeadm token create --print-join-command,默認(rèn)有效期24小時(shí),若想久一些可以結(jié)合–ttl參數(shù),設(shè)為0則用不過期

kubeadm join k8smaster.com:6443 --token pdas2m.fkgn8q7mz5u96jm6 --discovery-token-ca-cert-hash sha256:6fd9b1bf2d593d2d4f550cd9f1f596865f117fef462db42860228311c2712b8b

如果有輸出,比如下面,此時(shí)發(fā)現(xiàn)只有token沒有CA:

還需要解密獲得證書:openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
那么結(jié)果是6fd9b1bf2d593d2d4f550cd9f1f596865f117fef462db42860228311c2712b8b,也就是-discovery-token-ca-cert-hash sha256:的值。

如果報(bào)錯(cuò):

error execution phase preflight: couldn’t validate the identity of the
API Server: could not find a JWS signature in the cluster-info
ConfigMap for token ID “ecqb8f”

是因?yàn)榱钆七^期了,重新生成一個(gè)即可

3.72 子節(jié)點(diǎn)正確使用kubelet

無法正常使用kubelet get nodes,報(bào)錯(cuò)如下:

The connection to the server localhost:8080 was refused - did you
specify the right host or port?

先使用root用戶, 發(fā)現(xiàn)還是不行。

mkdir $HOME/.kube/
cp -i /etc/kubernets/kubelet.conf $HOME/.kube/config
chown 1000:1000 $HOME/.kube/config

3.8 配置flannel

# 下載flannel.yaml
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml 

鏡像:quay.io/coreos/flannel:v0.11.0-amd64可能拉取很慢,可以提前下載已導(dǎo)出的鏡像包在節(jié)點(diǎn)上執(zhí)行docker load完成鏡像導(dǎo)入(.docker)或者docker import(.tar)
flannel起來后,cosedns也會(huì)起來

到此這篇關(guān)于virtualBox搭建一個(gè)本地kubernets集群的文章就介紹到這了,更多相關(guān)virtualBox本地kubernets集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論