k8s+docker+etcd+flannel,非集群最小pass云搭建

准备工作

三台虚拟机CentOS Linux release 7.3.1611 (Core),需要7以上,镜像可以到官网下载,虚拟机网络选择桥接。

要用到的软件组件下载地址:链接:https://pan.baidu.com/s/1OKX19j3JVUyoOePN1UXr8w 
提取码:8zt5

私人镜像仓库:

下载registry仓库管理服务(链接:https://pan.baidu.com/s/1JI4Bb9sFHyEd6izaXc47OQ 提取码:rf5s

搭建方法查看:https://blog.csdn.net/nickljw/article/details/104295954

etcd下载地址

链接:https://pan.baidu.com/s/1jQoNZpaKagM2xnkOOzY-rw 
提取码:ugk1

主机名 ip
master 192.168.1.110
node 192.168.1.111
docker 192.168.1.119

主机名和ip可以自己设置,自己修改后请留意修改本文配置参数。

一、准备工作

1、主机名修改(在主机名与ip对应的虚拟机分别执行)

hostnamectl set-hostname master 
hostnamectl set-hostname node  
hostnamectl set-hostname docker

2、关闭防火墙(三台虚拟机执行)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3、关闭虚拟缓存(master和node执行)

swapoff -a 
vim /etc/fstab  --在swap最前面加上#进行注释

4、关闭安全子系统(注意不要改错,不然会导致内核奔溃开不了机)(三台虚拟机执行)

vim /etc/sysconfig/selinux   --修改SELINUX=enforcing 为SELINUX=disabled

5、添加dns域名解析(本机已经连接互联网,需要在线下载镜像)(三台虚拟机执行)

echo nameserver 114.114.114.114>>/etc/resolv.conf

6、设置内核(master和node执行)

cat <  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.conf
如果该操作遇到问题,处理方式如下:
执行sysctl –p时出现:
sysctl -p
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
解决方式:
modprobe br_netfilter
ls /proc/sys/net/bridge

二、安装etcd基础数据组件(master执行)

1、解压etcdetcd-v3.1.10-linux-amd64.tar.gz

tar -zxvf etcd-v3.1.10-linux-amd64.tar.gz

2、移动etcd到本地操作系统bin下面(master执行)

mv etcd-v3.1.10-linux-amd64/etcd* /usr/local/bin

3、创建etcd工作目录(master执行)

mkdir -p /var/lib/etcd  # 必须先创建工作目录

4、配置etcd启动脚本(master执行,ip为master的ip)

cat > etcd.service <

5、启动etcd并且设置开机启动(注意查看服务是否是running)(master执行)

mv etcd.service /etc/systemd/system/  --移动到系统目录

systemctl daemon-reload
systemctl enable etcd    --设置开机启动
systemctl start etcd      --启动ETCD

--附属
systemctl status etcd     --查看状态
systemctl stop etcd      --停止ETCD

三、安装docker(三台虚拟机操作,三台虚拟机都是最小化安装没有docker)

1、k8s-images.zip上传至/root目录,并解压:

unzip k8s-images.zip

2、进入k8s_images目录,执行安装Docker命令(三台虚拟机执行)

cd k8s_images
yum -y localinstall docker-ce-*

3、启动docker组件,并设置开机启动(三台虚拟机执行)

systemctl start docker && systemctl enable docker

四、安装k8s组件

1、导入kubernetes集群基础镜像(master和node执行)

cd /root/k8s_images/docker_images/
for i in $(ls *.tar);do docker load < $i;done

2、重命名coreDNS镜像名称(master和node执行)

docker tag 68af89c45ded coredns/coredns:1.0.0

3、安装kubernetes相关组件(master和node执行)

cd /root/k8s_images/
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
rpm -ivh kubernetes-cni-0.6.0-0.x86_64.rpm \
 kubelet-1.9.9-9.x86_64.rpm  \
 kubectl-1.9.0-0.x86_64.rpm
rpm -ivh kubectl-1.9.0-0.x86_64.rpm
rpm -ivh kubeadm-1.9.0-0.x86_64.rpm

5、查看安装结果(master和node执行)

rpm -qa |grep kube
rpm -qa |grep socat

6、调整kubernetes与docker之间参数(kubelet默认的cgroup的driver和docker的不一样,docker默认的cgroupfs,kubelet默认为systemd,因此我们要修改成一致。在虚拟机上部署k8s 1.9版本需要关闭操作系统交换分区,如下图所示)

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

7、指定本地kubelet镜像名称(master和node执行)

cat > /etc/systemd/system/kubelet.service.d/20-pod-infra-image.conf <

8、重新加载配置,启动kubelet,并设置开机启动(master和node执行)

systemctl daemon-reload
systemctl start kubelet
systemctl enable kubelet

9、k8s主节点初始化(master执行)

cat < config.yaml 
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
  endpoints:
  - http://192.168.1.110:2379
  dataDir: /var/lib/etcd
networking:
  podSubnet: 10.244.0.0/16
kubernetesVersion: 1.9.0
api:
  advertiseAddress: "192.168.1.110"
token: "b99a00.a144ef80536d4344"
tokenTTL: "0s"
featureGates:
  CoreDNS: true
imageRepository: "gcr.io/google_containers"
EOF

10、执行集群初始化命令(master执行)

kubeadm init --config config.yaml

最后会输出:kubeadm join --token b99a00.a144ef80536d4344 192.168.1.110:6443 --discovery-token-ca-cert-hash sha256:5470a7dbe26f0db422d30c15a00421c42f86eb3cec9c243a7de7bd2b098ba2e2

最后输出命令一定要保存起来,待会要用到,子节点加入集群也需要用到,没有输出的说明发现192.168.1.110失败,可以把- http://192.168.1.110:2379,ip改成127.0.0.1 或 localhost。

11、修改flannel网卡信息,启动flannel网络(master执行)

cd /root/k8s_images
vim  kube-flannel.yml    --以下红色方框内的必须与网卡名称相同,可通过ip addr命令查询网卡名称

k8s+docker+etcd+flannel,非集群最小pass云搭建_第1张图片

12、在该目录下,执行以下命令,启动flannel网络(master执行)

kubectl create -f kube-flannel.yml

13、查看启动情况(master执行)

kubectl get po -o wide --all-namespaces

k8s+docker+etcd+flannel,非集群最小pass云搭建_第2张图片

14、将子节点加入到master中已实际初始化生成的为准(node执行)

kubeadm join --token b99a00.a144ef80536d4344 192.168.1.110:6443 --discovery-token-ca-cert-hash sha256:5470a7dbe26f0db422d30c15a00421c42f86eb3cec9c243a7de7bd2b098ba2e2

15、查看k8s集群情况(master执行)

kubectl get node

结束

你可能感兴趣的:(k8s,kubernetes)