1.1机器准备
操作系统 |
配置 |
地址 |
Centos7.9 |
4G 2cpu |
192.168.2.137(k8s-master) |
Centos7.9 |
4G 2cpu |
192.168.2.138(k8s-node1) |
Centos7.9 |
4G 2cpu |
192.168.2.139(k8s-node2) |
修改主机名
hostnamectl set-hostname master # master节点操作
hostnamectl set-hostname node1 # node1节点操作
hostnamectl set-hostname node2 # node2节点操作
1.2环境准备——关闭firewalld和selinux(在k8s集群master和node上都进行操作)
1.关闭防火墙:
# systemctl stop firewalld
# systemctl disable firewalld
2.禁用SELinux:
# setenforce 0
3.编辑文件/etc/selinux/config,将SELINUX修改为disabled,如下:
# sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
SELINUX=disabled
关闭系统Swap:1.5之后的新规定
Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。
[root@localhost /]# swapoff -a
修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。
2.注释掉swap分区:
[root@localhost /]# sed -i 's/.*swap.*/#&/' /etc/fstab
# free -m
total used free shared buff/cache available
Mem: 3935 144 3415 8 375 3518
Swap: 0 0 0
时间同步
#安装时间同步工具
yum install ntpdate -y
#同步时间服务器
ntpdate time.windows.com
2.安装docker服务
yum install -y yum-utils device-mapper-persistent-data lvm2 git #安装常用工具
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加docker源
yum install docker-ce -y #此命令会安装最新版本docker
systemctl start docker.service && systemctl enable docker.service #启动并设置开机启动
3.使用kubeadm部署Kubernetes
在所有节点安装kubeadm和kubelet:
配置源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
提醒:如果下载失败,关闭认证,再次下载
所有节点安装
所有节点:
1.安装
# yum makecache fast #构建yum缓存
# yum install -y kubelet kubeadm kubectl ipvsadm #注意此命令会安装最新版本,我们安装旧版本看下面操作
======================================================================
[root@k8s-master ~]# yum install -y kubelet-1.19.1-0.x86_64 kubeadm-1.19.1-0.x86_64 kubectl-1.19.1-0.x86_64 ipvsadm
2.加载ipvs相关内核模块
如果重新开机,需要重新加载(可以写在 /etc/rc.local 中开机自动加载)
# modprobe ip_vs
# modprobe ip_vs_rr
# modprobe ip_vs_wrr
# modprobe ip_vs_sh
# modprobe nf_conntrack_ipv4
# modprobe br_netfilter
3.编辑文件添加开机启动
# vim /etc/rc.local
# chmod +x /etc/rc.local
# sysctl -p /etc/sysctl.d/k8s.conf
4.配置:
配置转发相关参数,否则可能会出错
# cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF
5.使配置生效
# sysctl --system
6.查看是否加载成功
# lsmod | grep ip_vs
因为通过kubeadm部署k8s时候会默认从google拉取需要的镜像,国内服务器拉取可能会失败
这里提前拉取kubeadm所需要的镜像(可以编辑一个脚本执行)
通过kubeadm config images list查看需要下载的image及其版本
#images
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
#Tag
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.1 k8s.gcr.io/kube-controller-manager:v1.19.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.1 k8s.gcr.io/kube-proxy:v1.19.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.1 k8s.gcr.io/kube-apiserver:v1.19.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.1 k8s.gcr.io/kube-scheduler:v1.19.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.4 k8s.gcr.io/coredns/coredns:v1.8.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.0-0 k8s.gcr.io/etcd:3.5.0-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5 k8s.gcr.io/pause:3.5
配置启动kubelet
1.配置kubelet使用pause镜像
获取docker的驱动cgroups
# DOCKER_CGROUPS=`docker info|grep "Cgroup Driver"|awk '{print $3}'`
这个是使用国内的源。-###注意我们使用谷歌的镜像--操作下面的第3标题
2.配置kubelet的cgroups
# cat >/etc/sysconfig/kubelet</etc/sysconfig/kubelet</etc/sysconfig/kubelet<
启动
# systemctl daemon-reload
# systemctl enable kubelet && systemctl restart kubelet
master节点初始化
[root@master ~]# kubeadm init --kubernetes-version=v1.19.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.246.166 --ignore-preflight-errors=Swap
说明
apiserver-advertise-address=192.168.246.166 ---master的ip地址。
--kubernetes-version=v1.19.1 --更具具体版本进行修改
如果前面没有提前拉取镜像,也可以在这里加选项--image-repository registry.aliyuncs.com/google_containers指定从阿里拉取所需要镜像,或者配置docker加速
初始化
记录下来内容
kubeadm join 192.168.91.151:6443 --token mtw6bh.x0k51vyvlpy8nz6w \
--discovery-token-ca-cert-hash sha256:041e713abfd4d8d4242c4bf60e8cd2f9af4cd8694b5cd6cdd95def14c0a3f593
使用kubectl工具:
[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# chown $(id -u):$(id -g) $HOME/.kube/config
node节点初始化
在node节点上执行
向集群添加新节点,执行kubeadm init输出的kubeadm join命令:
kubeadm join 192.168.91.151:6443 --token mtw6bh.x0k51vyvlpy8nz6w \
--discovery-token-ca-cert-hash sha256:041e713abfd4d8d4242c4bf60e8cd2f9af4cd8694b5cd6cdd95def14c0a3f593
默认token有效期为24显示,当过期之后,该token就不可用了。这时候需要重新创建token,操作如下:
kubeadm token create --print-join-command
安装网络插件
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@k8s-master ~]# vim kube-flannelv1.19.1.yaml
:% s/namespace: kube-flannel/namespace: kube-system/g
创建命名空间
与master节点初始化时的ip保持一致
与网卡名保持一致
[root@k8s-master ~]# kubectl apply -f kube-flannelv1.19.1.yaml
[root@k8s-master ~]# kubectl get pod -n kube-system
安装Dashboard可视化管理
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
浏览器访问ip即可