k8s集群搭建(超详细)
一、准备环境(所有节点都要操作)角色IP地址组件master192.168.91.128docker,kubectl,kubeadm,kubeletnode192.168.91.129docker,kubectl,kubeadm,kubelet二、初始化环境(所有节点都需要操作)2.1 主机名解析[root@master ~]# cat /etc/hosts127.0.0.1localhost l
·
一、准备环境(所有节点都要操作)
角色 | IP地址 | 组件 |
---|---|---|
master | 192.168.91.128 | docker,kubectl,kubeadm,kubelet |
node | 192.168.91.129 | docker,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节点加入集群
[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健补全方法(单击转入)
更多推荐
已为社区贡献2条内容
所有评论(0)