一、准备环境(所有节点都要操作)

角色IP地址组件
master192.168.91.128docker,kubectl,kubeadm,kubelet
node192.168.91.129docker,kubectl,kubeadm,kubelet

二、初始化环境(所有节点都需要操作)

2.1 主机名解析

[root@master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.91.128 master
192.168.91.129 node

2.2 时间同步

[root@master ~]# systemctl start chronyd
[root@master ~]# systemctl enable chronyd

2.3 关闭防火墙和selinux

[root@master ~]# systemctl stop firewalld    #临时关闭firewalld
[root@master ~]# systemctl disable firewalld   #永久关闭firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master ~]# setenforce 0    #临时关闭selinux
[root@master ~]# sed -ri '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config  #永久关闭selinux

如果有iptables防火墙,请关闭

2.4 关闭swap分区

[root@master ~]# swapoff -a  #临时关闭swap
[root@master ~]# sed -ri 's/.*swap.*/#&/g' /etc/fstab  #永久关闭swap

2.5 允许 iptables 检查桥接流量

确保 br_netfilter 模块被加载。这一操作可以通过运行 lsmod | grep br_netfilter 来完成。若要显式加载该模块,可执行 sudo modprobe br_netfilter。

为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。

[root@master ~]# yum install ipset ipvsadm ipvsadmin -y    #安装所需要的应用
[root@master ~]# cat <<EOF> /etc/sysconfig/modules/ipvs.modules  #加载模块脚本
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
[root@master ~]# lsmod | grep -e -ip_vs -e nf_conntrack_ipv4   #检查模块是否加载成功

2.6 修改linux的内核参数

[root@master ~]# cat <<EOF> /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
[root@master ~]# sysctl -p   #重新加载配置文件
[root@master ~]# modprobe br_netfilter   #加载网桥过滤模块
[root@master ~]# lsmod | grep br_netfilter   #查看模块是否加载成功

三、安装docker(所有节点都要操作)

#下载yum源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#安装docker
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

3.2 配置镜像加速器

由于k8s安装指定的cgroup是systemd,docker默认的cgroup是cgroupfs,所以要把docker的cgroup修改为systemd。

[root@master ~]# sudo mkdir -p /etc/docker
[root@master ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],  #修改docker的cgroup(非常重要)
  "registry-mirrors": ["https://o98n1akp.mirror.aliyuncs.com"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}
EOF
[root@master ~]# sudo systemctl daemon-reload
[root@master ~]# sudo systemctl restart docker

四、安装k8s(所有节点都要操作)

4.1 安装k8s组件

#配置yum源
[root@master ~]# 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=0
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

#安装kubeadm、kubelet和kubectl
[root@master ~]# yum install -y kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1

4.1.2 配置kubelet的cgroup

[root@master ~]# cat <<EOF> /etc/sysconfig/kubelet
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
EOF
[root@master ~]# systemctl enable kubelet

4.2 安装k8s集群

4.2.1 准备集群镜像

#查看所需镜像
[root@master ~]# kubeadm config images list
#下载镜像
[root@master ~]# images=(
	kube-apiserver:v1.15.12
	kube-controller-manager:v1.15.12
	kube-scheduler:v1.15.12
	kube-proxy:v1.15.12
	pause:3.1
	etcd:3.3.10
	coredns:1.3.1
)
[root@master ~]# 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
#查看镜像是否全部下载成功
[root@master ~]# docker images

4.2.2 初始化集群(在master上操作即可)

# 创建集群
[root@master ~]# kubeadm init \
	--apiserver-advertise-address=192.168.91.128 \       #master节点IP地址
	--image-repository registry.aliyuncs.com/google_containers \
	--kubernetes-version v1.15.12 \       #k8s版本
	--service-cidr=10.96.0.0/12 \
	--pod-network-cidr=10.244.0.0/16
	
# 创建必要文件
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
4.2.2.2 将node节点加入集群

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4tx11xoX-1634798257191)(C:\Users\huipao\AppData\Roaming\Typora\typora-user-images\1634797720007.png)]

[root@node ~]# kubeadm join 192.168.91.128:6443 --token 22x6sp.y3v21kko0fn6jmf1     --discovery-token-ca-cert-hash sha256:ed9351f4047fc997ae4125757b602cd762f2be7ed87f6cb709bd3b81f07ed83f

在master上查看集群信息

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE     VERSION
master   NotReady   master   5m49s   v1.15.1
node     NotReady   <none>   5s      v1.15.1

[root@master ~]# kubectl get nodes -o wide    #查看详细信息

4.3 安装flannel网络插件(在master上操作即可)

去baidu下载即可

[root@master ~]# kubectl apply -f flannel.yml

再次查看集群状态,status那一栏成为ready,此时k8s集群安装成功
在这里插入图片描述
k8s tab健补全方法(单击转入)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐