Centos7安裝K8S
1、服務器
需要準備三臺Centos7的服務器,配置最少2C 2G,
三臺服務器都已經配置好靜態IP,
沒有配的可以參考:VM Ware+Centos7配置靜態IP
| 主機名 | IP | Docker版本 | 主機配置 | K8S版本 |
|---|---|---|---|---|
| master01 | 192.168.159.171 | 20.10.7 | 2C8G | 1.21.2 |
| work01 | 192.168.159.172 | 20.10.7 | 2C8G | 1.21.2 |
| work02 | 192.168.159.173 | 20.10.7 | 2C8G | 1.21.2 |
2、環境準備
注意:以下操作需要三臺服務器都執行、都需要用root權限操作
1、配置yum阿里源
- 使用
yum命令、安裝wget命令
yum -y install wget


- 使用
mv命令將原yum源備份,
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

- 使用
wget命令下載阿里yum源,
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

- 將yum源清理一下,并將阿里yum源生效,
yum clean all
yum makecache



2、關閉防火墻
- 使用以下命令查看防火墻狀態,并關閉防火墻,顯示
not running為防火墻關閉狀態,
# 查看防火墻狀態
firewall-cmd --state
# 臨時停止防火墻
systemctl stop firewalld.service
# 禁止防火墻開機啟動
systemctl disable firewalld.service

3、關閉selinux狀態
- 使用以下命令查看
selinux狀態,并關閉selinux,
# 查看selinux狀態
getenforce
# 臨時關閉selinux
setenforce 0
# 永久關閉selinux
sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

4、禁止swap交換
- 使用以下命令關閉
swap記憶體交換
# 臨時關閉swap
swapoff -a
# 永久關閉swap
sed -i.bak '/swap/s/^/#/' /etc/fstab

5、內核引數修改
- 使用以下命令修改內核引數,
# 修改ipv4
sysctl -w net.ipv4.ip_forward=1
# 添加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 -p /etc/sysctl.d/k8s.conf

6、設定kubernetes源
- 新增kubernetes的阿里源
# 添加kubernetes源
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

- 使用以下命令,重繪
yum源,
yum clean all
yum -y makecache



7、Docker安裝
-
Docker選擇
20.10.7版本安裝,安裝步驟參考這篇博客:Centos7安裝Docker
8、設定Cgroup Driver
-
使用
vim命令修改Docker的daemon.json檔案,增加
exec-opts配置,
"exec-opts": ["native.cgroupdriver=systemd"]

- 使用以下命令重新加載
daemon.json配置,并重啟Docker
systemctl daemon-reload
systemctl restart docker

9、驗證機器的mac和UUID
- 使用以下命令,驗證機器的
mac地址和UUID是否相同,
# 查看mac地址
cat /sys/class/net/ens33/address
# 查看UUID
cat /sys/class/dmi/id/product_uuid

10、修改主機名
- 使用以下命令,修改機器的主機名,
注意:三臺機器主機名都需要修改
hostnamectl set-hostname master01
more /etc/hostname

11、修改hosts
- 使用以下命令,修改
hosts檔案,
cat >> /etc/hosts << EOF
192.168.159.171 master01
192.168.159.172 work01
192.168.159.173 work02
EOF


12、重啟機器
- 重啟三臺機器,使上面更改的配置全部生效!
3、安裝K8S
1、查看K8S版本
- 使用
yum list命令,列出所支持的版本,
注意:橫杠(-)之前的才是版本號,
yum list kubelet --showduplicates | sort -r


2、安裝kubelet、kubeadm、kubectl
- 使用
yum install命令安裝指定的K8S版本,
注意:三臺機器都需要執行以下操作
yum install -y kubelet-1.21.2 kubeadm-1.21.2 kubectl-1.21.2


- 啟動
kubelet服務,并設定開機自啟,
systemctl enable kubelet && systemctl start kubelet

3、拉取鏡像
- 使用
kubeadm命令、查看當前k8s所需的鏡像版本,
kubeadm config images list

-
可以看到上面k8s所需的鏡像版本是
1.21.3,跟安裝指定的版本并不相同,這個并不影響,可以自定義修改版本,只需要關注如:pause、etcd、coredns的版本即可,
因為k8s這些鏡像都是國外的,直接訪問下載鏡像可能會有問題,
撰寫拉取鏡像腳本,從阿里云鏡像倉庫下載所需版本,
注意:腳本需要在三臺機器上都撰寫,都需要拉取鏡像
#!/bin/bash url=registry.cn-hangzhou.aliyuncs.com/google_containers # 安裝指定的kubectl版本 version=v1.21.2 # 上面查出來的coredns版本號 coredns=1.8.0 images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`) for imagename in ${images[@]} ; do if [ $imagename = "coredns" ] then docker pull $url/coredns:$coredns docker tag $url/coredns:$coredns k8s.gcr.io/coredns/coredns:v1.8.0 docker rmi -f $url/coredns:$coredns else docker pull $url/$imagename docker tag $url/$imagename k8s.gcr.io/$imagename docker rmi -f $url/$imagename fi done

- 修改
images.sh腳本權限,改為可執行權限,
chmod +x images.sh

- 執行
images.sh腳本,拉取鏡像
./images.sh


- 使用
docker images命令,查看鏡像
docker images

4、初始化K8S集群
- 在
master01機器上執行初始化集群命令,
注意:該命令只需在master01上執行
kubeadm init --kubernetes-version=1.21.2 --apiserver-advertise-address=192.168.159.171 --pod-network-cidr=10.244.0.0/16
–kubernetes-version # 指定的版本
–apiserver-advertise-address # K8S主節點的地址
–pod-network-cidr # pod的網路IP范圍
- 記錄初始化集群命令后,k8s給你生成的加入集群命令,
kubeadm join 192.168.159.171:6443 --token ahuca1.yvo1nypczve06rfx \
--discovery-token-ca-cert-hash sha256:3c0612ffc6eaca3bd7d34fe603da008d55c2d3982268bb85105ffc464c4e1a1f

- 執行k8s集群初始化給你生成的創建目錄和復制組態檔命令,
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

- 在
work01和work02兩臺機器上的根目錄執行你剛才記錄的加入K8S集群命令,
kubeadm join 192.168.159.171:6443 --token ahuca1.yvo1nypczve06rfx \
--discovery-token-ca-cert-hash sha256:3c0612ffc6eaca3bd7d34fe603da008d55c2d3982268bb85105ffc464c4e1a1f

5、在master01機器上執行以下命令,查看k8s集群節點,
kubectl get nodes

5、安裝Calico網路插件
- 使用
curl命令下載Calico網路插件的YAML檔案,
curl https://docs.projectcalico.org/manifests/calico.yaml -O

- 使用
kubectl apply應用剛剛下載好的calico.yaml檔案,
kubectl apply -f calico.yaml

- 使用以下命令查看當前K8S集群的pods
kubectl get pods -o wide -n kube-system

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289427.html
標籤:其他
上一篇:JVM 記憶體區域
下一篇:問題解決:配置靜態IP


