k8s1.4.3安装实践记录(1)-etcd、docker、flannel安装配置
虚拟机:VMware® Workstation 12 Pro
系统:CentOS Linux release 7.2.1511 (Core) 3.10.0-327.el7.x86_64
由于刚开始学习k8s,本次软件的安装,我们都采用最简单的方式,能用yum 安装的尽量采用yum安装
1、ETCD安装
ETCD官方文档:https://github.com/coreos/etcd/blob/master/Documentation/docs.md
1.1 检查ETCD版本
[root@localhost ~]# yum list|grep etcd
etcd.x86_64 2.3.7-4.el7 @extras
[root@localhost ~]#
1.2 安装ETCD
yum install etcd
1.3 修改ETCD配置
安装好后,系统会自动生成etcd.service文件(路径为/usr/lib/systemd/system/),修改对应的配置
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target [Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
User=etcd
# set GOMAXPROCS to number of processors
ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
--name=\"${ETCD_NAME}\" \
--data-dir=\"${ETCD_DATA_DIR}\" \
--listen-peer-urls=\"${ETCD_LISTEN_PEER_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}\" \
--listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""
Restart=on-failure
LimitNOFILE= [Install]
WantedBy=multi-user.target
并配置其配置文件
ETCD_NAME=zwetcd_2
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://192.168.37.131:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.37.131:2379,http://127.0.0.1:2379"
#[cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.131:2380"
# if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
ETCD_INITIAL_CLUSTER="zwetcd_2=http://192.168.37.131:2380,zwetcd_1=http://192.168.37.130:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.131:2379"
如果使用firewalld作为防火墙,则需要开放端口:
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
问题:
1、本地连接报错
[root@localhost system]# etcdctl ls /
Error: client: etcd cluster is unavailable or misconfigured
error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused
error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused
如果出现如上的错误,是因为ETCD_LISTEN_CLIENT_URLS参数没有配置http://127.0.0.1:2379而导致的,不过已经配置了具体的IP,还需要配置本地链路,这个就有点奇怪了。
2、Docker安装
2.1、检查docker版本
yum list |grep docker
[root@localhost ~]# yum list|grep docker
docker.x86_64 1.10.3-46.el7.centos.14 @extras
docker-common.x86_64 1.10.3-46.el7.centos.14 @extras
docker-selinux.x86_64 1.10.3-46.el7.centos.14 @extras
cockpit-docker.x86_64 0.114-2.el7.centos extras
docker-devel.x86_64 1.3.2-4.el7.centos extras
docker-distribution.x86_64 2.4.1-2.el7 extras
docker-forward-journald.x86_64 1.10.3-44.el7.centos extras
docker-latest.x86_64 1.12.1-2.el7.centos extras
docker-latest-logrotate.x86_64 1.12.1-2.el7.centos extras
docker-latest-v1.10-migrator.x86_64 1.12.1-2.el7.centos extras
docker-logrotate.x86_64 1.10.3-46.el7.centos.14 extras
docker-lvm-plugin.x86_64 1.10.3-46.el7.centos.14 extras
docker-novolume-plugin.x86_64 1.10.3-46.el7.centos.14 extras
docker-python.x86_64 1.4.0-115.el7 extras
docker-registry.noarch 0.6.8-8.el7 extras
docker-registry.x86_64 0.9.1-7.el7 extras
docker-unit-test.x86_64 1.10.3-46.el7.centos.14 extras
docker-v1.10-migrator.x86_64 1.10.3-46.el7.centos.14 extras
python-docker-py.noarch 1.7.2-1.el7 extras
[root@localhost ~]#
2.2 安装docker
yum install docker -y
2.3 检查docker安装信息
[root@localhost ~]# docker version
Client:
Version: 1.10.
API version: 1.22
Package version: docker-common-1.10.-.el7.centos..x86_64
Go version: go1.6.3
Git commit: cb079f6-unsupported
Built: Fri Sep ::
OS/Arch: linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
3 flannel
3.1 检查flannel版本
[root@localhost etcd]# yum list |grep flannel
flannel.x86_64 0.5.-.el7 @extras
3.2 安装flannel
yum install flannel
3.3 修改service配置
查看flannel的配置文件(使用yum安装会自动生成此文件,如果下载的执行文件则需要手动生成,在使用systemctl命令执行service 的时候会用到),可以看到flannel的service配置如下:
[root@localhost etcd]# more /usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service [Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure [Install]
WantedBy=multi-user.target
RequiredBy=docker.service
其中所有的参数都配置在/etc/sysconfig/flanneld文件中,修改此文件,初始文件如下:
# Flanneld configuration options # etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD="http://127.0.0.1:2379" # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_KEY="/atomic.io/network" # Any additional options that you want to pass
FLANNEL_OPTIONS=""
其中
FLANNEL_ETCD:为ETCD的地址,
FLANNEL_ETCD_KEY:为在etcd中配置的网络参数的key
FLANNEL_OPTIONS:为flannel的启动参数,我在这里加上了监听的网卡
根据前面步骤中etcd的配置,我们修改配置文件如下:
# Flanneld configuration options # etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD="http://192.168.37.130:2379" # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_KEY="/flannel/network" # Any additional options that you want to pass
FLANNEL_OPTIONS="--iface=eno16777736"
3.4 启动FLANNEL
可以使用service flanneld start 或者systemctl start flannel启动flannel
3.5 修改docker网络
因为docker需要使用flanneld的网络,因此需要修改docker的service文件:
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target rhel-push-plugin.socket
Wants=docker-storage-setup.service [Service]
Type=notify
NotifyAccess=all
#import flannel configuration
EnvironmentFile=-/etc/sysconfig/flanneld
EnvironmentFile=-/run/flannel/subnet.env
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
ExecStart=/usr/bin/docker-current daemon \
--exec-opt native.cgroupdriver=systemd \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY \
--bip=${FLANNEL_SUBNET}
LimitNOFILE=
LimitNPROC=
LimitCORE=infinity
TimeoutStartSec=
MountFlags=slave
Restart=on-abnormal [Install]
WantedBy=multi-user.target
在执行前增加配置文件
EnvironmentFile=-/etc/sysconfig/flanneld
EnvironmentFile=-/run/flannel/subnet.env
执行命令增加参数 --bip=${FLANNEL_SUBNET}
重启docker
systemctl daemon-reload
systemctl restart docker
3.6 问题
1、Failed to retrieve network config: 104: Not a directory (/flannel/network/config)
问题原因:在初次配置的时候,把flannel的配置文件中的etcd-prefix-key配置成了/flannel/network/config,实际上应该是/flannel/network
注意:如上配置需要在集群的所有机器上执行,完成后,上述安装的各个系统的启动顺序应该是:
systemctl start etcd
systemctl start flannel
systemctl start docker
配置完检查:
使用ip a检查当前的网络的准备情况:
[root@localhost system]# ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :0c:::cf:e3 brd ff:ff:ff:ff:ff:ff
inet 192.168.37.130/ brd 192.168.37.255 scope global dynamic eno16777736
valid_lft 1554sec preferred_lft 1554sec
inet6 fe80::20c:29ff:fe79:cfe3/ scope link
valid_lft forever preferred_lft forever
: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu qdisc pfifo_fast state UNKNOWN qlen
link/none
inet 172.17.75.0/ scope global flannel0
valid_lft forever preferred_lft forever
: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu qdisc noqueue state DOWN
link/ether ::e3:f0:0d: brd ff:ff:ff:ff:ff:ff
inet 172.17.75.1/ scope global docker0
valid_lft forever preferred_lft forever
如果看到到flannel0余docker0的网段相同,则网络配置成功。
k8s1.4.3安装实践记录(1)-etcd、docker、flannel安装配置的更多相关文章
- k8s1.4.3安装实践记录(2)-k8s安装
前面一篇已经安装好了ETCD.docker与flannel(k8s1.4.3安装实践记录(1)),现在可以开始安装k8s了 1.K8S 目前centos yum上的kubernetes还是1.2.0, ...
- Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性
在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性.但那是因为 Spring 提供了将上 ...
- k8s1.4.3安装实践记录(3)下载基础镜像
下载基础镜像,因为Google被墙,所以我们用时速云中的镜像来tag docker pull index.tenxcloud.com/google_containers/pause-amd64:3.0 ...
- Spring Boot 2 实践记录之 Redis 及 Session Redis 配置
先说 Redis 的配置,在一些网上资料中,Spring Boot 的 Redis 除了添加依赖外,还要使用 XML 或 Java 配置文件做些配置,不过经过实践并不需要. 先在 pom 文件中添加 ...
- Docker的安装和测试
1,Docker安装 Docker是啥,以及其与虚拟机的对比,就不介绍了,网上有很多资源可以学习和了解. 本篇文章重点介绍Docker的安装和测试使用. Docker的安装,分为离线安装和在线安装两种 ...
- Docker的安装(6-13)
摘自<Docker-从入门到实践> 一.Docker的安装 准备工作 系统要求 Docker CE 支持以下版本的 Ubuntu 操作系统: Artful 17.10 (Docker CE ...
- 基于kail的docker下安装sqli-labs
后面的关卡涉及到转码问题,比如空格,在Windows中会受到限制,比如24关的文件重命名问题,所以在这记录下在docker下安装sqli-labs,在linux下运行就不会受到限制. 参考链接:htt ...
- docker 详细安装及问题排查
一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看 ...
- 【转】RHadoop实践系列之二:RHadoop安装与使用
RHadoop实践系列之二:RHadoop安装与使用 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法, ...
随机推荐
- canvas环形进度条
<style> canvas { border: 1px solid red; margin: 100px; }</style> <canvas id="rin ...
- MyEclipse WebSphere开发教程:WebSphere 8安装指南(二)
[周年庆]MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] IBM为使用WebSphere测试应用程序的开发人员提供了免费的WebSphere Ap ...
- 深入理解Linux网络技术内幕——Notification内核通知表链
为什么要有内核通知表链: Linux由多个相互依赖的子系统组成.其中一些子系统可能需要对其他子系统的一些事件感兴趣.这样子系统之间需要一些通信机制来实现这一功能. 在接触Notific ...
- select * from v$reserved_words
select * from v$reserved_words 查询库中所有关键字
- NodeJS 难点(网络,文件)的 核心 stream 三:readable ?
什么是可读流 可读流 常见 读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStream(filePath); 我们常见的控 ...
- vue-cli 添加到生产环境问题总结
1. 路径问题 部署到生产环境后的实际链接为: 服务器项目路径 + serviceUrl的路径 创建 GlobalConstant.js 分别配置 开发环境和生产环境的 路径 (注:此处生 ...
- (libev) cannot allocate xxx bytes, aborting 问题的一种触发条件
最近在项目中使用了libev,遇到一个很奇怪的crash,服务器运行随机时间后有一定的概率奔溃,输出的最后一行log是: (libev) cannot allocate xxx bytes, abor ...
- C语言基础:常见循环语句 分类: iOS学习 c语言基础 2015-06-10 21:46 13人阅读 评论(0) 收藏
for语句 for( 初始化表达式; 循环判断条件 ;增量表达式); while(条件表达式){ 循环体; } 先判断条件表达式,如果为真就执行循环体,执行完再去判断条件表达式 do{ 循环体; } ...
- C++ 多线程中使用cout还是printf
在多线程的设计模式下,如果多个线程都使用cout打印信息,那么很容易出现内容交替的现象,例如下图: 代码如下: 如果把cout替换成printf,那么就不会出现这个问题,运行结果如下图: 对应代码如下 ...
- 了解WCF的前世今生之实现服务端(一)
http://www.cnblogs.com/jiagoushi/archive/2013/03/15/2962351.html 1.WCF是对现有的分布式通信技术的一个整合,其中包括Com/DCom ...