主要内容

1.环境准备(2主机)

2.安装流程

3.问题分析

4.总结

环境配置(2主机)

系统:CentOS 7.3 x64 
网络:局域网(VPC) 
主机: 
master:172.16.0.17 
node-1:172.16.0.7

一、修改host配置

修改master和minion-1的host文件,使得各主机可通过主机名访问,方便更新和迁移

echo "39.96.69.98   k8s-master
47.94.174.85 k8s-node1" >> /etc/hosts

二、关闭

  1、禁用并关闭防火墙或者直接一句话 systemctl stop firewalld & systemctl disable firewalld

[root@k8s-master ~]# systemctl disable firewalld
[root@k8s-master ~]# systemctl stop firewalld [root@k8s-node-1 ~]# systemctl disable firewalld
[root@k8s-node-1 ~]# systemctl stop firewalld

  2、关闭selinux

[root@k8s-master ~]# setenforce 0

[root@k8s-node-1 ~]# setenforce 0

 临时关闭,重启后失效

  3、关闭swap

 

[root@k8s-master ~]# swapoff -a

[root@k8s-node-1 ~]# swapoff -a

临时关闭,重启后失效  

开始搭建 Master

设置hostname-将hostname修改为 k8s-master并且sudo vim /etc/hosts 追加 39.96.69.98 k8s-master

hostnamectl set-hostname k8s-master

echo "39.96.69.98   k8s-master" >> /etc/hosts

  

开启  br_netfilter kernel module

modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
echo '1' > /proc/sys/net/ipv4/ip_forward

1、安装 docker ce

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install -y docker-ce

 

2、安装 k8s

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

  

安装
yum install -y kubelet kubeadm kubectl

3、重启

sudo reboot

4、启动 docker and kublet

systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet

  

下面要初始化 但是下面部分需要讲解改变docker 源 才可以进行操作

更改初始化的docker 源以下步骤:

  

二、kubernetes环境搭建-LMLPHP

解决方式

最少需要2个cpu或者加个参数 --ignore-preflight-errors=NumCPU

kubeadm init --apiserver-advertise-address=47.94.174.85 --ignore-preflight-errors=NumCPU

二、kubernetes环境搭建-LMLPHP 

提示docker pull镜像失败,开启ss

kubeadm init 命令默认使用的docker镜像仓库为k8s.gcr.io,国内无法直接访问,于是需要变通一下。

首先查看需要使用哪些镜像

kubeadm config images list
#输出如下结果
k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

我们通过 docker.io/mirrorgooglecontainers 中转一下

批量下载及转换标签

脚本如下

kubeadm config images list |sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#docker.io/mirrorgooglecontainers#g' |sh -x
docker images |grep mirrorgooglecontainers |awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#docker.io/mirrorgooglecontainers#k8s.gcr.io#2' |sh -x
docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ", $1":"$2}' |sh -x
docker pull coredns/coredns:1.2.2
docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker rmi coredns/coredns:1.2.2

注:coredns没包含在docker.io/mirrorgooglecontainers中,需要手工从coredns官方镜像转换下。

 

查看镜像列表

docker images
#输出如下结果
k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

现在已经满足要求了,可以愉快的继续kubeadm init   (我采用这个方法)

kubeadm init --apiserver-advertise-address=39.96.69.98
最少需要2个cpu或者加个参数 --ignore-preflight-errors=NumCPU 即:kubeadm init --apiserver-advertise-address=39.96.69.98 --ignore-preflight-errors=NumCPU

  

二、kubernetes环境搭建-LMLPHP

(下面是另一种方式没实践过)

另外一种方法是使用kubeadm配置文件,通过在配置文件中指定docker仓库地址,便于内网快速部署。目前处于试验阶段。

生成配置文件

kubeadm config print-defaults --api-objects ClusterConfiguration >kubeadm.conf
 

将配置文件中的

imageRepository: k8s.gcr.io
 

改为你自己的私有docker仓库,比如

imageRepository: docker.io/mirrorgooglecontainers
 

kubeadm生成的配置文件目前不够完善,需要修改kubernetes版本

kubernetesVersion: v1.12.0
 

改为

kubernetesVersion: v1.12.2
 

然后运行命令

kubeadm config images list --config kubeadm.conf
kubeadm config images pull --config kubeadm.conf
kubeadm init --config kubeadm.conf
 

更多kubeadm配置文件参数详见

kubeadm config print-defaults

 总之如图上面镜像是可以的,但是下面还是有问题 分别是1、内核不支持5.0的 2、 上面补上开启  br_netfilter kernel module 3、docker 版本改上

05-11 13:38