最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VirtualBox+Ubuntu16搭建Kubernetes集群的實(shí)現(xiàn)

 更新時(shí)間:2021年06月09日 10:34:36   作者:K8sCat  
這篇文章記錄了我在一臺(tái)機(jī)器使用 VirtualBox + Ubuntu 16 搭建 Kubernetes 的整個(gè)過(guò)程,包括其中遇到的一些問(wèn)題以及解決辦法。感興趣的可以了解一下

Kubernetes 運(yùn)維之路 的開(kāi)始當(dāng)然少不了集群環(huán)境的搭建,這篇文章記錄了我在一臺(tái)機(jī)器使用 VirtualBox + Ubuntu 16 搭建 Kubernetes 的整個(gè)過(guò)程,包括其中遇到的一些問(wèn)題以及解決辦法。

關(guān)于 Kubernetes

下面是一段來(lái)自維基百科的關(guān)于 Kubernetes 的解釋?zhuān)?/p>

Kubernetes(常簡(jiǎn)稱(chēng)為 K8s)是用于自動(dòng)部署、擴(kuò)展和管理「容器化(containerized)應(yīng)用程序」的開(kāi)源系統(tǒng)。該系統(tǒng)由 Google 設(shè)計(jì)并捐贈(zèng)給 Cloud Native Computing Foundation(今屬 Linux 基金會(huì))來(lái)使用。
它旨在提供“跨主機(jī)集群的自動(dòng)部署、擴(kuò)展以及運(yùn)行應(yīng)用程序容器的平臺(tái)”。它支持一系列容器工具,包括Docker等。

Kubernetes 可以為我們提供 服務(wù)發(fā)現(xiàn)和負(fù)載均衡、存儲(chǔ)編排、自動(dòng)部署和回滾、自動(dòng)完成裝箱計(jì)算、自我修復(fù) 和 密鑰與配置管理 的能力。

基礎(chǔ)環(huán)境準(zhǔn)備

安裝 VirtualBox

VirtualBox 是一種功能強(qiáng)大的虛擬機(jī)軟件,而且是開(kāi)源免費(fèi)的,這是下載地址,安裝 VirtualBox 非常簡(jiǎn)單,這里我就不贅述了。

下載 Ubuntu 16 系統(tǒng)鏡像

這里我選擇了 Ubuntu 16 作為系統(tǒng)鏡像,當(dāng)然你也可以使用其他系統(tǒng),比如 CentOS 等,Ubuntu 16 的下載地址。

虛擬機(jī) x3

安裝好了 VirtualBox,下載了 Ubuntu 16 的鏡像后,我們首先需要搭建三臺(tái) Ubuntu 16 的虛擬機(jī)。這個(gè)新建虛擬機(jī)的過(guò)程也是比較簡(jiǎn)單的,一步一步往下走就可以了。新建完成后,我們需要對(duì)每臺(tái)虛擬機(jī)進(jìn)行相應(yīng)的配置,配置時(shí)使用的用戶應(yīng)該是 root 用戶。

虛擬機(jī) IP

由于我們使用的是虛擬機(jī),我們會(huì)給每臺(tái)虛擬機(jī)配置網(wǎng)卡,讓每臺(tái)虛擬機(jī)都可以上網(wǎng)的,這里有兩種方式:

  • 使用 橋接網(wǎng)卡,每臺(tái)虛擬機(jī)的 IP 將會(huì)是宿主機(jī)網(wǎng)段的,支持虛擬機(jī)上網(wǎng)
  • 使用 NAT 網(wǎng)絡(luò) + 端口轉(zhuǎn)發(fā),網(wǎng)段自行設(shè)置,支持虛擬機(jī)上網(wǎng)

大家可以使用其中任意一種方式給虛擬機(jī)配置網(wǎng)卡,從而讓虛擬機(jī)可以上網(wǎng)。

需要注意的是,在集群搭建完成后,集群中的每個(gè)節(jié)點(diǎn)的 IP 要求保持不變,否則節(jié)點(diǎn)需要重新加入。

簡(jiǎn)單的方式就是讓虛擬機(jī)不關(guān)機(jī),而是進(jìn)入睡眠狀態(tài),下次只需喚醒即可。

在集群中,我們使用的是內(nèi)網(wǎng)地址,可以通過(guò) ifconfig 或者 ip addr 找到每臺(tái)虛擬機(jī)對(duì)應(yīng)的內(nèi)網(wǎng)地址:

> ifconfig

enp0s3    Link encap:Ethernet  HWaddr 08:00:27:6f:23:2a  
          inet addr:10.0.2.4  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe6f:232a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3277016 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3385793 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1084480916 (1.0 GB)  TX bytes:2079122979 (2.0 GB)

這臺(tái)虛擬機(jī)(master)的地址就是 10.0.2.4。

配置主機(jī)名

Kubernetes 的節(jié)點(diǎn)名稱(chēng)是由主機(jī)名決定的,所以我們可以分別設(shè)置三臺(tái)虛擬機(jī)的主機(jī)名為 master、node1 和 node2,通過(guò)修改 /etc/hosts 文件來(lái)修改主機(jī)名,需要重啟虛擬機(jī):

# /etc/hosts
10.0.2.4 master
10.0.2.5 node1
10.0.2.6 node2

SSH 無(wú)密連接

在虛擬機(jī)運(yùn)行起來(lái)后,我們要做的第一件事就是要連通這三臺(tái)虛擬機(jī),即配置 SSH 無(wú)密連接。
首先在其中的一臺(tái)虛擬機(jī)上生成 SSH 的公私鑰:

ssh-keygen -t rsa -C 'k8scat@gmail.com' -f ~/.ssh/id_rsa -q -N ''

關(guān)于 ssh-keygen 的參數(shù)說(shuō)明:

  • -t rsa 指定加密算法為 RSA
  • -C 'k8scat@gmail.com' 用于提供一個(gè)備注,表明私鑰的生成者
  • -f ~/.ssh/id_rsa 指定私鑰生成的位置
  • -q -N '' 表示不對(duì)私鑰加密碼,以及使用靜默的方式

將公私鑰分發(fā)給另外兩臺(tái)虛擬機(jī),并在三臺(tái)虛擬機(jī)上都將公鑰(~/.ssh/id_rsa.pub)的內(nèi)容寫(xiě)進(jìn) ~/.ssh/authorized_keys 文件中,同時(shí)設(shè)置 ~/.ssh/authorized_keys 文件的權(quán)限為 400:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 400 ~/.ssh/authorized_keys

配置完成后,我們將可以通過(guò)以下方式在其中一個(gè)虛擬機(jī)上連接另一臺(tái)虛擬機(jī)了:

# 在 master 節(jié)點(diǎn)上
ssh root@node1

Kubernetes 集群搭建

在弄好三臺(tái)虛擬機(jī)后,我們便可以開(kāi)始搭建一個(gè)擁有三個(gè)節(jié)點(diǎn)的 Kubernetes 的集群了。

安裝 Docker

apt-get update -y
apt-get install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg \
  lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# INSTALL DOCKER ENGINE
apt-get update -y
apt-get install -y docker-ce docker-ce-cli containerd.io

# Configure Docker to start on boot
systemctl enable docker.service
systemctl enable containerd.service

# Start Docker
systemctl start docker

安裝 kubeadm、kubelet 和 kubectl

這里使用的是阿里云的鏡像源:

# 更新 apt 包索引并安裝使用 Kubernetes apt 倉(cāng)庫(kù)所需要的包
apt-get update -y
apt-get install -y apt-transport-https ca-certificates curl

# 下載 Google Cloud 公開(kāi)簽名秘鑰
# curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

# 添加 Kubernetes apt 倉(cāng)庫(kù)
# echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 更新 apt 包索引,安裝 kubelet、kubeadm 和 kubectl,并鎖定其版本
apt-get update -y
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

關(guān)閉 SWAP

編輯 /etc/fstab 文件并注釋掉 swap 分區(qū)的配置:

#/dev/mapper/master--vg-swap_1 none            swap    sw              0       0

預(yù)先下載鏡像

獲取 kubeadm init 需要使用到的鏡像列表:

> kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.21.1
k8s.gcr.io/kube-controller-manager:v1.21.1
k8s.gcr.io/kube-scheduler:v1.21.1
k8s.gcr.io/kube-proxy:v1.21.1
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns/coredns:v1.8.0

k8s 的鏡像源對(duì)于國(guó)內(nèi)用戶是可望而不可即的,但我們可以先拉到國(guó)內(nèi)的鏡像倉(cāng)或者可以使用的鏡像倉(cāng),比如阿里云的容器鏡像服務(wù) ACR 和 Docker 的官方鏡像倉(cāng) DockerHub。

我們可以新建一個(gè) GitHub 代碼倉(cāng),里面只有一個(gè) Dockerfile,其內(nèi)容如下:

FROM k8s.gcr.io/kube-apiserver:v1.21.0

然后在阿里云的容器鏡像服務(wù) ACR 中新建一個(gè)鏡像,并關(guān)聯(lián)這個(gè) GitHub 代碼倉(cāng),構(gòu)建出來(lái)的鏡像就是我們要的 k8s 鏡像,比如上面的 k8s.gcr.io/kube-apiserver:v1.21.1,但在使用的時(shí)候需要重新給鏡像打標(biāo)簽。

在 ACR 中構(gòu)建好了所有需要的鏡像后,使用下面這個(gè)腳本可以快速處理給鏡像打標(biāo)簽的任務(wù):

# Pull images from aliyun registry
kubeadm config images list | sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#registry.cn-shenzhen.aliyuncs.com/k8scat#g' -e 's#/coredns/coredns#/coredns#g' | sh -x

# Tag images
docker images | grep k8scat | awk '{print "docker tag",$1":"$2,$1":"$2}' | sed -e 's#registry.cn-shenzhen.aliyuncs.com/k8scat#k8s.gcr.io#2' | sh -x
docker tag k8s.gcr.io/coredns:v1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0

# Remove images
docker images | grep k8scat | awk '{print "docker rmi",$1":"$2}' | sh -x

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

10.0.2.4 是 master 節(jié)點(diǎn)的 IP 地址,設(shè)置 pod 網(wǎng)段為 192.168.16.0/20:

> kubeadm init --apiserver-advertise-address=10.0.2.4 --pod-network-cidr=192.168.16.0/20

kubeadm join 10.0.2.4:6443 --token ioshf8.40n8i0rjsehpigcl \
    --discovery-token-ca-cert-hash sha256:085d36848b2ee8ae9032d27a444795bc0e459f54ba043500d19d2c6fb044b065

加入 node 節(jié)點(diǎn)

kubeadm join 10.0.2.4:6443 --token ioshf8.40n8i0rjsehpigcl \
    --discovery-token-ca-cert-hash sha256:085d36848b2ee8ae9032d27a444795bc0e459f54ba043500d19d2c6fb044b065

分發(fā) kubectl 配置文件

scp master:/etc/kubernetes/admin.conf /etc/kubernetes/admin.conf
echo 'export KUBECONFIG="/etc/kubernetes/admin.conf"' >> /etc/profile
source /etc/profile

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

這里我們使用的是 Weave Net:

# curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" > weave-net.yaml

# With IPALLOC_RANGE
kubectl apply -f https://gist.githubusercontent.com/k8scat/c6a1aa5a1bdcb8c220368dd2db69bedf/raw/da1410eea6771c56e93f191df82206be8e722112/k8s-weave-net.yaml

到此這篇關(guān)于VirtualBox+Ubuntu16搭建Kubernetes集群的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)VirtualBox+Ubuntu16搭建Kubernetes集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論

晋江市| 安图县| 三台县| 舒城县| 南投市| 崇州市| 昌都县| 喀喇沁旗| 巫溪县| 高邑县| 抚宁县| 五常市| 司法| 西贡区| 芷江| 炎陵县| 商丘市| 鲁甸县| 华容县| 洛扎县| 通许县| 海城市| 靖边县| 井研县| 岳西县| 石屏县| 栖霞市| 化隆| 汉寿县| 醴陵市| 奇台县| 阿克苏市| 来凤县| 苏州市| 灵台县| 犍为县| 曲阳县| 伊宁市| 额尔古纳市| 柳江县| 巴青县|