文章目录
官网地址
中文社区
k8s集群部署方式
-
使用minikube安装单节点集群,用于测试
-
采用工具kubeadm
-
使用kubespray,google官方提供的工具
-
全手动:二进制方式安装
-
全自动安装:rancher、kubesphere
主机环境
采用centos7.9.2009,k8s官方建议要关闭交换区
主机名 | 主机IP |
---|---|
k8s-master | 192.168.0.130 |
k8s-node01 | 192.168.0.131 |
k8s-node02 | 192.168.0.132 |
k8s-node03 | 192.168.0.133 |
部署前提,需要优化centos、安装docker,在【centos创建后优化并安装docker】中有详细介绍
关闭swap分区
# 临时关闭
swapoff -a
# 永久关闭
vi /etc/fstab
# 将文件中的/dev/mapper/centos-swap这行代码注释掉
#/dev/mapper/centos-swap swap swap defaults 0 0
# 确认swap已经关闭:若swap行都显示 0 则表示关闭成功
free -m
hosts配置
vi /etc/hosts
192.168.0.130 k8s-master
192.168.0.131 k8s-node01
192.168.0.132 k8s-node02
192.168.0.133 k8s-node03
配置kubernetes安装源
vi /etc/yum.repos.d/kubernates.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
# 更新缓存
yum clean all
yum -y makecache
# 验证源是否可用
yum list | grep kubeadm
# 如果提示要验证yum-key.gpg是否可用,输入y。
# 查找到kubeadm。显示版本
安装k8s-1.17.5(k8s1.17.5版本官方推荐安装docker19.03版本)
# 查看k8s版本
yum list kubelet --showduplicates | sort -r
# 安装k8s-1.17.5
yum install -y kubelet-1.17.5 kubeadm-1.17.5 kubectl-1.17.5
设置kubelet
# 如果不配置kubelet,可能会导致K8S集群无法启动。为实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性
vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
# 设置开机启动
systemctl enable kubelet
安装k8s
# 查看安装集群需要的景象
kubeadm config images list
# 编写下载镜像脚本
mkdir -p /data
cd /data
vi images.sh
#!/bin/bash
# 下面的镜像应该去除"k8s.gcr.io"的前缀,版本换成kubeadm config images list命令获取到的版本
images=(
kube-apiserver:v1.17.5
kube-controller-manager:v1.17.5
kube-scheduler:v1.17.5
kube-proxy:v1.17.5
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in ${images[@]} ;
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
# 给脚本授权
chmod +x images.sh
# 执行脚本
./images.sh
# 保存镜像
docker save -o k8s-master.1.17.5.tar \
k8s.gcr.io/kube-proxy:v1.17.5 \
k8s.gcr.io/kube-apiserver:v1.17.5 \
k8s.gcr.io/kube-controller-manager:v1.17.5 \
k8s.gcr.io/kube-scheduler:v1.17.5 \
k8s.gcr.io/coredns:1.6.5 \
k8s.gcr.io/etcd:3.4.3-0 \
k8s.gcr.io/pause:3.1
docker save -o k8s-node.1.17.5.tar \
k8s.gcr.io/kube-proxy:v1.17.5 \
k8s.gcr.io/pause:3.1
# 以后使用可以直接导入
# master节点导入镜像
docker load -i k8s-master.1.17.5.tar
# node节点导入镜像
docker load -i k8s-node.1.17.5.tar
配置k8s集群网络
# 镜像下载
docker pull calico/cni:v3.14.2
docker pull calico/pod2daemon-flexvol:v3.14.2
docker pull calico/node:v3.14.2
docker pull calico/kube-controllers:v3.14.2
# 保存镜像
docker save -o calico.tar \
calico/cni:v3.14.2 \
calico/pod2daemon-flexvol:v3.14.2 \
calico/node:v3.14.2 \
calico/kube-controllers:v3.14.2
# 配置hostname
hostnamectl set-hostname k8s-master
# 关机
poweroff
# 拍摄快照:1. k8s初始化集群完成
# 克隆k8s-master,生成node01、node02、node03
# 登录node节点,分别设置hostname、ip
# 修改hostname、ip后,需要重启网络
systemctl restart network
# 重启后,验证各节点间网络是否通,是否能通外网
初始化k8s集群信息:calico网络
# 在k8s-master节点执行
kubeadm init --apiserver-advertise-address=192.168.0.130 --kubernetes-version v1.17.5 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.81.0.0/16
# 在k8s-master上执行配置命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 加入工作节点,(加入节点的token有效期24小时,每次都变化)
# 在192.168.0.131 / 132 / 133上执行,下列命令,会在初始化k8s集群时给出,替换即可
kubeadm join 192.168.0.130:6443 --token 8ic4bd.ns2wgycdqx5ey7go \
--discovery-token-ca-cert-hash sha256:3b883e6c1f0dcb29834dd08af8eb6e105854d0a475edb3630afc4539fd4f95c8
# 查看是否添加成功
kubectl get nodes
# 如果STATUS是NotReady,需要执行,yml在上面提供了,下载下来放到/data/中
kubectl apply -f /data/calico.yml
# 再去查看STATUS,已经是Ready
# 【优化】kubectl命令自动补全
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source ~/.bash_profile
# 【可能会遇到】yum-key.gpg验证未通过
wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import yum-key.gpg
rpm --import rpm-package-key.gpg