K8s集群搭建(kubeadm方案)

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

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值