1、查看系统信息:lsb_release -a

2、系统和软件配置文件更新:yum -y update

yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

3、安装docker:

3.1、安装必要的依赖:sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2

3.2、设置docker仓库:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.3、设置要设置一下阿里云镜像加速器:

阿里云镜像仓库控制台地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://n4njvk8h.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

3.4、安装docker: yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io

3.5、启动docker:sudo systemctl start docker && sudo systemctl enable docker

4、设置hostname,并且修改hosts文件

4.1、设置master的hostname,并且修改hosts文件

sudo hostnamectl set-hostname master

vi /etc/hosts

121.41.112.165 master

121.4.87.165 salve1

110.42.182.63 salve2

4.2、设置worker01/02的hostname,并且修改hosts文件

sudo hostnamectl set-hostname salve1

sudo hostnamectl set-hostname salve2

vi /etc/hosts

121.41.112.165 master

121.4.87.165 salve1

110.42.182.63 salve2

5、系统基础前提配置

5.1:关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

5.2:关闭selinux

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

5.3:关闭swap

swapoff -a

sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

5.5:配置iptables的ACCEPT规则

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

5.6:设置系统参数:

cat <<EOF > /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

更新配置:sysctl --system

6、配置yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=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

EOF

7、安装kubeadm&kubelet&kubectl

yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0

如果一次性安装失败,可以分步骤安装:

 

yum install -y kubelet-1.14.0-0

yum install -y kubectl-1.14.0-0

yum install -y kubeadm-1.14.0-0(放最后执行,否则可能导致kubectl有多个版本,最终各种问题出现)

7.1、docker和k8s设置同一个cgroup

vi /etc/docker/daemon.json

"exec-opts": ["native.cgroupdriver=systemd"],

7.2、重启docker

systemctl restart docker

7.3、kubelet,这边如果发现输出directory not exist,也说明是没问题的,大家继续往下进行即可

sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

8、查看kubeadm使用的镜像,可以发现这里都是国外的镜像

kubeadm config images list

8.1、解决国外镜像不能访问的问题,创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像

```shell

#!/bin/bash

set -e

KUBE_VERSION=v1.14.0

KUBE_PAUSE_VERSION=3.1

ETCD_VERSION=3.3.10

CORE_DNS_VERSION=1.3.1

GCR_URL=k8s.gcr.io

ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers

images=(kube-proxy:${KUBE_VERSION}

kube-scheduler:${KUBE_VERSION}

kube-controller-manager:${KUBE_VERSION}

kube-apiserver:${KUBE_VERSION}

pause:${KUBE_PAUSE_VERSION}

etcd:${ETCD_VERSION}

coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do

docker pull $ALIYUN_URL/$imageName

docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName

docker rmi $ALIYUN_URL/$imageName

done

8.2:将这些镜像推送到自己的阿里云仓库【可选,根据自己实际的情况】

docker login --username=1320335 registry.cn-beijing.aliyuncs.com

运行脚本 sh ./kubeadm-push-aliyun.sh

set -e

KUBE_VERSION=v1.14.0

KUBE_PAUSE_VERSION=3.1

ETCD_VERSION=3.3.10

CORE_DNS_VERSION=1.3.1

GCR_URL=k8s.gcr.io

ALIYUN_URL=registry.cn-beijing.aliyuncs.com/qimupiao-test

images=(kube-proxy:${KUBE_VERSION}

kube-scheduler:${KUBE_VERSION}

kube-controller-manager:${KUBE_VERSION}

kube-apiserver:${KUBE_VERSION}

pause:${KUBE_PAUSE_VERSION}

etcd:${ETCD_VERSION}

coredns:${CORE_DNS_VERSION})

for imageName in ${images[@]} ; do

docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName

docker push $ALIYUN_URL/$imageName

docker rmi $ALIYUN_URL/$imageName

done

9:kube init初始化master

9.1:kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=121.41.112.165 --v=6 --ignore-preflight-errors=all

apiserver-advertise-address是计算的外网ip,不过用阿里云或者腾讯云安装可能会出现初始化超时,node "master" not found错误,可以参照解决阿里云ECS下kubeadm部署k8s无法指定公网IP(作废) - LifeOfCoding - 博客园这篇博客解决。

--v参数设置为6可以显示更详细的日志

ignore-preflight-errors可以屏蔽掉k8s对服务器配置的限制

9.2:查看kubelet状态:systemctl status kubelet

若要重新初始化集群状态:kubeadm reset

主节点初始化成功后,注意查看并保存日志信息

查看pod启动情况:kubectl get pods -n kube-system,等待最后五项全部启动成功

 

健康检查:curl -k https://localhost:6443/healthz

此时因为网络插件未安装,master的状态为NotReady,不用担心,

 

在master节点安装安装网络插件calico:kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml

# 确认一下calico是否安装成功

kubectl get pods --all-namespaces -w

9.3:确认一下calico是否安装成功:kubectl get pods --all-namespaces -w

10:根据主节点安装成功的日志信息,将salve1、salve2加入集群

10.1:根据日志提示将master节点的 /etc/kubernetes/admin.conf文件复制

mkdir -p $HOME/.kube

sudo cp -i admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

10.2在从节点执行,kubeadm join 121.41.112.165:6443 --token 9yea0i.t4cqzz8w2blpq1nm --discovery-token-ca-cert-hash sha256:10b69d6b1d4ff6891b84bcdd902b4251be524a14db7ac22321e7c0268e204ed9

可能会出现的报错1: /proc/sys/net/ipv4/ip_forward contents are not set to 1

执行echo 1 > /proc/sys/net/ipv4/ip_forward

10.2在master节点上检查集群信息,kubectl get nodes

 

集群安装成功

Logo

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

更多推荐