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 。
getenforce
setenforce 0
sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
4、禁止swap交换
- 使用以下命令关闭
swap 内存交换
swapoff -a
sed -i.bak '/swap/s/^/#/' /etc/fstab
5、内核参数修改
- 使用以下命令修改内核参数。
sysctl -w net.ipv4.ip_forward=1
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的阿里源
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 是否相同。
cat /sys/class/net/ens33/address
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
version=v1.21.2
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
|