Kubeadm安裝k8s1.18.1——Centos

也沒事啦,就想在自己個人機子上搭建個k8s,方便自己學習,搞k8s也快一年了,加油加油!本來想買個雲服務器,心想自己也沒怎麼用還是有點貴,窮,還是在個人機子上安裝吧。

0. 序言

0.1 本文的目錄

在這裏插入圖片描述

0.2 閱讀本文可以給你帶來什麼

瞭解使用kubeadm安裝k8s,促進更好的學習k8s。

1. 個人虛機安裝

Parallels —— Mac 系統最強虛擬機,真香!

CentOS-8.1.1911-x86_64-dvd1.iso —— 下載地址:http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

內存要大於等於 2 G ,CPU核數需要大於等於 2 核

安裝完CentOS設置網卡開機啓動

vim /etc/sysconfig/network-scripts/ifcfg-xxx

將其中ONBOOT參數的值改爲yes,保存退出

2. 使用Kubeadm安裝k8s

官網:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

2.1 準備開始

查看下官網的要求

要求
翻譯一下就是如下幾個要求:

  1. 機子的OS系統要是Ubuntu 16.04+、Debian 9+、CentOS 7…
  2. 機子內存要大於等於 2 G
  3. 機子 CPU 核數大於等於 2 核
  4. 集羣中的所有機器的網絡彼此均能相互連接(公網和內網都可以)
  5. 節點之中不可以有重複的主機名、MAC 地址或 product_uuid
  6. 開啓機器上的某些端口
  7. 禁用交換分區,爲了保證 kubelet 正常工作

2.2 禁用交換分區

驗證交換分區有沒有關閉

free -m

在這裏插入圖片描述
1.註釋/etc/fstab關於swap的配置
在這裏插入圖片描述
2.執行如下命令

echo vm.swappiness=0 >> /etc/sysctl.conf

3.重啓

reboot

4.驗證(Swap行均爲0)

free -m

在這裏插入圖片描述

2.3 關閉防火牆

systemctl stop firewalld
systemctl disable firewalld

如果各個主機啓用了防火牆,需要開放Kubernetes各個組件所需要的端口。如下圖所示,詳細信息請看官網

在這裏插入圖片描述

2.4 關閉SELINUX

# 臨時禁用
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

2.5 修改k8s.conf文件

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

2.6 確保每個節點上 MAC 地址和 product_uuid 的唯一性

  • 您可以使用命令 ip linkifconfig -a 來獲取網絡接口的 MAC 地址
  • 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令對 product_uuid 校驗

一般來講,硬件設備會擁有唯一的地址,但是有些虛擬機的地址可能會重複。Kubernetes 使用這些值來唯一確定集羣中的節點。 如果這些值在每個節點上不唯一,可能會導致安裝失敗

在這裏插入圖片描述
在這裏插入圖片描述

2.7 檢查網絡適配器

如果您有一個以上的網絡適配器,同時您的 Kubernetes 組件通過默認路由不可達,我們建議您預先添加 IP 路由規則,這樣 Kubernetes 集羣就可以通過對應的適配器完成連接。

單網卡跳過。

2.8 安裝Docker

2.8.1 卸載老版本Docker

如果沒有安裝老版本docker,這一步可以跳過。

yum remove docker \
           docker-common \
           docker-selinux \
           docker-engine

2.8.2 通過yum安裝Docker

# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝 Docker-CE
yum -y install docker-ce docker-ce-selinux
# 安裝指定版本的Docker-CE:
# Step 3.1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Step 3.2 : 安裝指定版本的Docker-CE
# yum -y --setopt=obsoletes=0 install docker-ce-[VERSION] docker-ce-selinux-[VERSION]
# Step 4: 開啓Docker服務
systemctl enable docker && systemctl start docker

安裝Docker遇到的問題

package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed

在這裏插入圖片描述
解決辦法——安裝container.io

# 網站 https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages
yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

驗證安裝成功

docker version

在這裏插入圖片描述
配置阿里雲鏡像docker加速器

cat << EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://0bb06s1q.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
EOF
# 重啓docker
systemctl daemon-reload && systemctl restart docker && systemctl enable docker.service

2.9 安裝kubeadm,kubectl,kubelet

master節點安裝kubeadm,kubectl,kubelet

2.9.1 添加yum源

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

2.9.2 安裝軟件

yum install -y kubelet kubeadm kubectl
# 設置kubelet開機啓動
systemctl enable kubelet && systemctl start kubelet

在這裏插入圖片描述

2.10 導出kubeadm集羣部署自定義文件

kubeadm config print init-defaults > init.default.yaml 

2.11 修改自定義配置文件

修改如下問題

  1. 主節點IP——advertiseAddress
  2. 國內阿里鏡像地址imageRepository——registry.aliyuncs.com/google_containers
  3. pod網段配置——不同網絡插件網段不一樣詳細見官網

在這裏插入圖片描述

2.12 拉取阿里雲kubernetes容器鏡像

kubeadm config images list --config init.default.yaml

kubeadm config images pull --config init.default.yaml

在這裏插入圖片描述

2.13 Master安裝部署

kubeadm init --config=init.default.yaml

在這裏插入圖片描述

2.14 配置用戶證書

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

2.15 查看集羣狀態

kubectl get node

在這裏插入圖片描述
notready原因是沒有安裝pod網絡。

2.16 安裝pod網絡——Calico

不同pod網絡對pod網段要求不一樣見官網。我這邊安裝的是Calico。

kubectl apply -f https://docs.projectcalico.org/v3.11/manifests/calico.yaml

在這裏插入圖片描述

2.17 添加Node節點

課查看官網

# token和hash 下面會介紹如何獲取
# control-plane-host和control-plane-port分別是控制面對應的ip和端口

kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>

查看token

kubeadm token list

在這裏插入圖片描述
token24小時過期

# 重新創建 token
kubeadm token create

# 創建discovery-token-ca-cert-hash

在這裏插入圖片描述

2.18 重置

kubeadm reset

3. 總結

本文簡單的講述瞭如何使用kubeadm在Centos8安裝k8s1.18.1版本。

參考

https://yq.aliyun.com/articles/626118

https://www.cnblogs.com/liweiming/p/12674947.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章