概述
1、最少3台Centos
A、至少2核CPU+2G内存+20G硬盘
B、必须在同一网段
本示例中分配为:
Master:10.0.1.86
Worker1:10.0.1.87
Worker2:10.0.1.88
Worker3:10.0.1.89
2、ip addr确认是否有分配到IPV4地址。没有的话nmtui,Automatically connect打上勾
3、用SSH连接
4、禁用防火墙,systemctl stop firewalld & systemctl disable firewalld
5、禁用SELINUX
A、setenforce 0
B、 vi /etc/selinux/config
C、SELINUX=disabled
6、禁用swap
A、swapoff -a
B、vi /etc/fstab,注释掉swap
7、添加k8s源,建议使用阿里或者163的(不可以科学上网的方式)
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
8、安装kubelet、kubeadm、kubectl
yum install -y kubelet kubeadm kubectl
9、kube-proxy开启ipvs
vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
接下来还需要确保各个节点上已经安装了ipset软件包yum install ipset。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm yum install ipvsadm。
10、安装docker
yum install docker
systemctl start docker & systemctl enable docker
11、设置开机启动kubelet
systemctl enable kubelet
12、修改hostname(非常重要,如果hostname相同会导致问题)
hostnamectl set-hostname XXXX
13、初始化Master节点
kubeadm init --kubernetes-version=v1.13.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.1.86 --ignore-preflight-errors=all --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
如果出现timeout是因为docker无法自动获取到images导致的,可以两种方式解决
A、手动去pull并修改标签
B、修改docker源的方式来解决
14、手动pull images
docker pull mirrorgooglecontainers/kube-apiserver:v1.13.0
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.0
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.0
docker pull mirrorgooglecontainers/kube-proxy:v1.13.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6
docker tag mirrorgooglecontainers/kube-proxy:v1.13.0 k8s.gcr.io/kube-proxy:v1.13.4
docker tag mirrorgooglecontainers/kube-scheduler:v1.13.0 k8s.gcr.io/kube-scheduler:v1.13.4
docker tag mirrorgooglecontainers/kube-apiserver:v1.13.0 k8s.gcr.io/kube-apiserver:v1.13.4
docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.0 k8s.gcr.io/kube-controller-manager:v1.13.4
docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
15 使用kubeadm init
kubeadm init --kubernetes-version=v1.13.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.1.86 --ignore-preflight-errors=all --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
面会出现错误,一定是墙的问题了:
因为前面设置了代理,导致kubelet访问API Server不通,所以需要关闭http proxy。
gemfield@sl:~$ unset http_proxy https_proxy
#或者下面这个更优雅的方法
gemfield@sl:~$ export no_proxy=192.168.1.118
16,关闭http proxy后再次kubeadm init
kubeadm init --kubernetes-version=v1.13.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.0.1.86 --ignore-preflight-errors=all --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
这是因为前面已经执行过一次kubeadm init了(其实是好几次...)。这个时候需要加个参数来忽略到这些:--ignore-preflight-errors=all
17
终于成功了。注意最后的这3段输入,分别是:为正常非root用户所做的配置;部署pod network;添加其它node到这个集群(注意token是保密的,不要泄露给别人)。下面会继续提到。
重启kubelet service的方式:
gemfield@master:~$ sudo systemctl restart kubelet.service
最后
以上就是暴躁保温杯为你收集整理的K8s集群搭建(kubeadm方案)的全部内容,希望文章能够帮你解决K8s集群搭建(kubeadm方案)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复