docker k8s + flannel

kubernetes 是谷歌开源的 docker 集群管理解决方案。

项目地址:
http://kubernetes.io/


测试环境:

node-1: 10.6.0.140
node-2: 10.6.0.187
node-3: 10.6.0.188


kubernetes 集群,包含 master 节点,与 node 节点。

关系图:

docker k8s 1.3.8 + flannel

hostnamectl --static set-hostname hostname

10.6.0.140 - k8s-master
10.6.0.187 - k8s-node-1
10.6.0.188 - k8s-node-2


部署:

一: 首先,我们需要先安装 etcd , etcd 是k8s集群的基础组件。

分别安装 etcd

yum -y install etcd

 

修改配置文件,/etc/etcd/etcd.conf 需要修改如下参数:

ETCD_NAME=etcd1
ETCD_DATA_DIR="/var/lib/etcd/etcd1.etcd"
ETCD_LISTEN_PEER_URLS="http://10.6.0.140:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.6.0.140:2379,http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.6.0.140:2380"
ETCD_INITIAL_CLUSTER="etcd1=http://10.6.0.140:2380,etcd2=http://10.6.0.187:2380,etcd3=http://10.6.0.188:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="k8s-etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://10.6.0.140:2379"

 

其他etcd集群中: ETCD_NAME , 以及IP 需要变动


修改 etcd 启动文件 /usr/lib/systemd/system/etcd.service

 

sed -i 's/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\"/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --listen-client-urls=\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --advertise-client-urls=\\\"${ETCD_ADVERTISE_CLIENT_URLS}\\\" --initial-cluster-token=\\\"${ETCD_INITIAL_CLUSTER_TOKEN}\\\" --initial-cluster=\\\"${ETCD_INITIAL_CLUSTER}\\\" --initial-cluster-state=\\\"${ETCD_INITIAL_CLUSTER_STATE}\\\"/g' /usr/lib/systemd/system/etcd.service

 

分别启动 所有节点的 etcd 服务

systemctl enable etcd


systemctl start etcd


查看启动情况
systemctl status etcd


查看 etcd 集群状态:

etcdctl cluster-health

出现 cluster is healthy 表示成功


查看 etcd 集群成员:

etcdctl member list


二: 部署k8s 的网络 flannel

编辑 /etc/hosts 文件,配置hostname 通信

vi /etc/hosts 添加:

10.6.0.140 k8s-master
10.6.0.187 k8s-node-1
10.6.0.188 k8s-node-2


安装 flannel 。

yum -y install flannel


清除网络中遗留的docker 网络 (docker0, flannel0 等)

ifconfig

如果存在 请删除之,以免发生不必要的未知错误

ip link delete docker0
....


设置 flannel 所用到的IP段

 

etcdctl --endpoint http://10.6.0.140:2379 set /flannel/network/config '{"Network":"10.10.0.0/16","SubnetLen":25,"Backend":{"Type":"vxlan","VNI":1}}'


接下来修改 flannel 配置文件

vim /etc/sysconfig/flanneld

 

FLANNEL_ETCD="http://10.6.0.140:2379,http://10.6.0.187:2379,http://10.6.0.188:2379"   # 修改为 集群地址
FLANNEL_ETCD_KEY="/flannel/network/config"        # 修改为 上面导入配置中的  /flannel/network
FLANNEL_OPTIONS="--iface=em1"                     # 修改为 本机物理网卡的名称

 


启动 flannel

systemctl enable flanneld
systemctl start flanneld

 

下面还需要修改 docker 的启动文件 /usr/lib/systemd/system/docker.service

在 ExecStart 参数 dockerd 后面增加

ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS


重新读取配置,启动 docker
systemctl daemon-reload
systemctl start docker

 

查看网络接管

ifconfig

可以看到 docker0 与 flannel.1 已经在我们设置的IP段内了,表示已经成功

 

 

 


三、安装k8s

 

安装k8s 首先是 Master 端安装

下载朋友的 rpm 包

http://upyun.mritd.me/kubernetes/kubernetes-1.3.8-1.x86_64.rpm

rpm -ivh kubernetes-1.3.8-1.x86_64.rpm

 

 

由于 google 被墙

国内已经有人将镜像上传至 docker hub 里面了

我们直接下载:

docker pull chasontang/kube-proxy-amd64:v1.4.0
docker pull chasontang/kube-discovery-amd64:1.0
docker pull chasontang/kubedns-amd64:1.7
docker pull chasontang/kube-scheduler-amd64:v1.4.0
docker pull chasontang/kube-controller-manager-amd64:v1.4.0
docker pull chasontang/kube-apiserver-amd64:v1.4.0
docker pull chasontang/etcd-amd64:2.2.5
docker pull chasontang/kube-dnsmasq-amd64:1.3
docker pull chasontang/exechealthz-amd64:1.1
docker pull chasontang/pause-amd64:3.0


下载以后使用 docker tag 命令将其做别名改为 gcr.io/google_containers


docker tag chasontang/kube-proxy-amd64:v1.4.0  gcr.io/google_containers/kube-proxy-amd64:v1.4.0
docker tag chasontang/kube-discovery-amd64:1.0 gcr.io/google_containers/kube-discovery-amd64:1.0
docker tag chasontang/kubedns-amd64:1.7  gcr.io/google_containers/kubedns-amd64:1.7
docker tag chasontang/kube-scheduler-amd64:v1.4.0  gcr.io/google_containers/kube-scheduler-amd64:v1.4.0
docker tag chasontang/kube-controller-manager-amd64:v1.4.0  gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0
docker tag chasontang/kube-apiserver-amd64:v1.4.0  gcr.io/google_containers/kube-apiserver-amd64:v1.4.0
docker tag chasontang/etcd-amd64:2.2.5  gcr.io/google_containers/etcd-amd64:2.2.5
docker tag chasontang/kube-dnsmasq-amd64:1.3  gcr.io/google_containers/kube-dnsmasq-amd64:1.3
docker tag chasontang/exechealthz-amd64:1.1  gcr.io/google_containers/exechealthz-amd64:1.1
docker tag chasontang/pause-amd64:3.0  gcr.io/google_containers/pause-amd64:3.0



清楚原来下载的镜像

docker rmi chasontang/kube-proxy-amd64:v1.4.0
docker rmi chasontang/kube-discovery-amd64:1.0
docker rmi chasontang/kubedns-amd64:1.7
docker rmi chasontang/kube-scheduler-amd64:v1.4.0
docker rmi chasontang/kube-controller-manager-amd64:v1.4.0
docker rmi chasontang/kube-apiserver-amd64:v1.4.0
docker rmi chasontang/etcd-amd64:2.2.5
docker rmi chasontang/kube-dnsmasq-amd64:1.3
docker rmi chasontang/exechealthz-amd64:1.1
docker rmi chasontang/pause-amd64:3.0
View Code

相关文章:

  • 2021-12-06
  • 2021-10-03
  • 2021-05-24
  • 2021-11-06
  • 2022-02-09
  • 2022-02-11
猜你喜欢
  • 2021-11-11
  • 2022-02-21
  • 2021-07-11
  • 2022-02-16
  • 2022-12-23
  • 2021-09-23
  • 2021-10-20
相关资源
相似解决方案