也沒事啦,就想在自己個人機子上搭建個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 準備開始
查看下官網的要求
翻譯一下就是如下幾個要求:
- 機子的OS系統要是Ubuntu 16.04+、Debian 9+、CentOS 7…
- 機子內存要大於等於 2 G
- 機子 CPU 核數大於等於 2 核
- 集羣中的所有機器的網絡彼此均能相互連接(公網和內網都可以)
- 節點之中不可以有重複的主機名、MAC 地址或 product_uuid
- 開啓機器上的某些端口
- 禁用交換分區,爲了保證 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 link
或ifconfig -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 修改自定義配置文件
修改如下問題
- 主節點IP——advertiseAddress
- 國內阿里鏡像地址imageRepository——registry.aliyuncs.com/google_containers
- 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