k8s搭建

准备三台centos7 1804以上的主机

IP地址规划

10.0.0.100 master

10.0.0.101 node1

10.0.0.102 node2

主机搭建

主机配置:2核心 4G内存 50G硬盘

1、系统安装的时候要选择基础服务器配置(可以省去很多包的安装)

2、虚拟机需要能直接连接外网

3、网络配置可以参考网络教程建议选择nat

4、进制swap分区(可以选择自动分区、也可以选择手动分区,看个人喜好)

进入系统以后可以用:

cat /etc/reahat-release 检查系统版本要求是1804版本以上

可以用ping www.baidu.com 检测是否有外网(如果没有可以看看dns是否配置)

配置网络可以参考:

        linux网卡连接失败设备无法激活_m0_52526697的博客-CSDN博客



一、基本环境搭建

以下配置3个节点都需要配置

  1、第一步我们需要配置主机清单       

10.0.0.100 master

10.0.0.101 node1

10.0.0.102 node2

2、配置时间同步(因为我们搭建的是服务器集群,对时间配置会有一定要求,如果您是最小化安装需要自行安装时间服务,)

systemctl start chronyd

systemctl enable chronyd

最后用date命令查看三个节点时间是否进行同步

3、永久禁用防火墙跟selinux

# 1 关闭firewalld服务
 systemctl stop firewalld
 systemctl disable firewalld

#下面是禁用selinux首先进入下面这个文件

vim /etc/selinux/config

#修改这个命令

SELINUX=disabled

4、禁用swap分区(因为k8s默认是禁用swap分区的)

vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap

5、修改linux的内核参数

#进入下面配置文件添加配置

vim /etc/sysctl.d/kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

#退出文件

#重新加载配置

sysctl -p

#加载网桥过滤模块

modprobe br_netfilter

#查看网桥过滤是否成功

 lsmod | grep br_netfilter

6、配置ipvs功能(k8s是基于service或者ipvs的,ipvs性能比较高,可以自行选择,我们就选择ipvs进行配置)

#安装服务

yum install ipset ipvsadmin -y

#创建一个可执行的脚本

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

#对脚本赋予可执行权限

chmod +x /etc/sysconfig/modules/ipvs.modules

#执行脚本

/bin/bash /etc/sysconfig/modules/ipvs.modules

#最后查看脚本是否执行成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

7、完成以上步骤以后需要重启主机

reboot

二、安装docker与k8s组件的安装

A、安装docker

        1、切换镜像源

                 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O 

        2、查看当前镜像源中支持的docker版本

                yum list docker-ce --showduplicates

        3、安装指定版本的docker,必须指定--setopt=obsoletes=0参数(指定版本安装)

                yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

        4、添加一个配置文件

                 mkdir /etc/docker

    cat <<EOF> /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
EOF

5、设置开机自启并启动docker

systemctl enable docker

systemctl start docker

B、安装k8s组件

 1、k8s官方镜像在国外所以我们这个测试环境采用阿里源

    #编写一个yum源文件

    vim /etc/yum.repos.d/kubernetes.repo

   #配置下面参数(注意格式)

[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgchech=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
             http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2、安装k8s需要的3个服务

yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

4、配置kubelet的cgroup

编辑配置文件/etc/sysconfig/kubelet(里面会有一行参数我们需要注释或者删除),配置下面的参数

vim /etc/sysconfig/kubelet

#增加下面两行参数

KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

5、设置k8s的开机自启

systemctl enable kubelet

三、下载k8s镜像、搭建k8s集群

A、下载k8s镜像

1、我们可以通过下面命令查看我们需要的镜像

        kubeadm config images list

2、下载镜像(因为镜像在国外我们没有办法直接下载,所有我们使用间接的方式)

images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)

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

B、我们配置我们的服务器集群

1、在master节点执行

#注意下面的10.0.0.100要根据自己的ip地址进行配置

kubeadm init \
    --apiserver-advertise-address=10.0.0.100 \
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version=v1.17.4 \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16

创建必要的文件

mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config

执行完以后会出现一个以

kubeadm join 10.0.0.100 --token ...

开头的token  我们需要把这个命令在两个node节点执行

2、我们可以用下面命令查看节点信息

在master执行

kubectl get nodes

这个时候我们的主机都是NotReady没有起来是因为我们没有配置网络的原因

3、配置kubectl的网络插件

在master执行

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下载配置网络的yaml文件

4、重置kubeadmreset集群

#在两个node节点之外的节点进行操作
kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
##重启kubelet
systemctl restart kubelet
##重启docker
systemctl restart docker

在master重启docker和kubelet
systemctl restart kubelet
systemctl restart docker

5、使用配置文件启动fannel

注意:执行个命令的时候需要跟我们上面下载那个文件在同一个目录下

kubectl apply -f kube-flannel.yml

6、我们使用下面命令重新生成token

kubeadm token create --print-join-command

生成的token需要在两个node节点执行

7、在主机点查看集群状态

在主节点执行

       kubectl get nodes

这个时候你会发现你的服务器的状态变成了Ready

(那么就证明你的k8s集群搭建成功了)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值