CentOS8 安裝kubernetes(K8S)


一、環境准備

1. 關閉交換區

#臨時關閉
sudo swapoff -a

#永久關閉
#把/etc/fstab中的swap注釋掉
sudo sed -i 's/.*swap.*/#&/' /etc/fstab

2. 禁用selinux

#臨時關閉
setenforce 0


#永久關閉
sudo sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

3. 關閉防火牆

sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

二、安裝K8S

1. 配置系統基本安裝源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

2. 添加K8S安裝源

將如下內容保存到:/etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el8-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

3. 安裝docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

為了docker加速pull,可以設置阿里雲加速:

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json

設置為如下內容:

{
"registry-mirrors" : ["https://mj9kvemk.mirror.aliyuncs.com"]
}

4. 安裝kubectl、kubelet、kubeadm

安裝kubectl、kubelet、kubeadm,設置kubelet開機啟動,啟動kubelet。

sudo yum install -y kubectl kubelet kubeadm
sudo systemctl enable kubelet
sudo systemctl start kubelet

查看K8S版本

kubeadm version
kubectl version --client
kubelet --version

5. 初始化kubernetes集群

kubeadm init --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=127.0.0.1 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.1 --pod-network-cidr=10.18.0.0/16

運行后出現問題:

[root@k8s-master01 ~]# kubeadm init --apiserver-advertise-address=0.0.0.0 \
--apiserver-cert-extra-sans=127.0.0.1 \
--image-repository=registry.aliyuncs.com/google_containers \
--ignore-preflight-errors=all \
--kubernetes-version=v1.21.1\
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.18.0.0/16
W0702 16:23:11.951553 16395 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.5
[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”.

出現[WARNING IsDockerSystemdCheck],是由於docker的Cgroup Driver和kubelet的Cgroup Driver不一致導致的,此處選擇修改docker的和kubelet一致

查看docker信息:

docker info | grep Cgroup

[root@k8s-master01 ~]# docker info | grep Cgroup
Cgroup Driver: cgroupfs
Cgroup Version: 1

可以看到驅動為Cgroup,需要改為systemd。編輯文件/usr/lib/systemd/system/docker.service

vi /usr/lib/systemd/system/docker.service

在ExecStart命令中添加

--exec-opt native.cgroupdriver=systemd

 然后重啟docker,再查看信息,可以看到已經變為systemd了

systemctl daemon-reload
systemctl restart docker
docker info | grep Cgroup

 此時再執行下面的命令進行初始化:

kubeadm init --apiserver-advertise-address=0.0.0.0 \
--apiserver-cert-extra-sans=127.0.0.1 \
--image-repository=registry.aliyuncs.com/google_containers \
--ignore-preflight-errors=all \
--kubernetes-version=v1.21.1 \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.18.0.0/16

 

kubeadm init --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=127.0.0.1 --image-repository=registry.aliyuncs.com/google_containers --ignore-preflight-errors=all --kubernetes-version=v1.21.1 --service-cidr=10.10.0.0/16 --pod-network-cidr=10.18.0.0/16

執行提示中的命令:

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

再執行:

kubectl get node
kubectl get pod --all-namespaces

 如果node節點為NotReady,因為coredns pod沒有啟動,缺少網絡pod。

6. 安裝calico網絡

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

運行之后查看信息,節點處於Ready狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM