虚拟机: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版本

  1. [root@localhost ~]# yum list|grep etcd
  2. etcd.x86_64 2.3.7-4.el7 @extras
  3. [root@localhost ~]#

1.2 安装ETCD

  1. yum install etcd

1.3 修改ETCD配置

安装好后,系统会自动生成etcd.service文件(路径为/usr/lib/systemd/system/),修改对应的配置

  1. [Unit]
  2. Description=Etcd Server
  3. After=network.target
  4. After=network-online.target
  5. Wants=network-online.target
  6.  
  7. [Service]
  8. Type=notify
  9. WorkingDirectory=/var/lib/etcd/
  10. EnvironmentFile=-/etc/etcd/etcd.conf
  11. User=etcd
  12. # set GOMAXPROCS to number of processors
  13. ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /usr/bin/etcd \
  14. --name=\"${ETCD_NAME}\" \
  15. --data-dir=\"${ETCD_DATA_DIR}\" \
  16. --listen-peer-urls=\"${ETCD_LISTEN_PEER_URLS}\" \
  17. --advertise-client-urls=\"${ETCD_ADVERTISE_CLIENT_URLS}\" \
  18. --initial-cluster-token=\"${ETCD_INITIAL_CLUSTER_TOKEN}\" \
  19. --initial-cluster=\"${ETCD_INITIAL_CLUSTER}\" \
  20. --initial-cluster-state=\"${ETCD_INITIAL_CLUSTER_STATE}\" \
  21. --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""
  22. Restart=on-failure
  23. LimitNOFILE=
  24.  
  25. [Install]
  26. WantedBy=multi-user.target

并配置其配置文件

  1. ETCD_NAME=zwetcd_2
  2. ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://192.168.37.131:2380"
  3. ETCD_LISTEN_CLIENT_URLS="http://192.168.37.131:2379,http://127.0.0.1:2379"
  4. #[cluster]
  5. ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.131:2380"
  6. # if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
  7. ETCD_INITIAL_CLUSTER="zwetcd_2=http://192.168.37.131:2380,zwetcd_1=http://192.168.37.130:2380"
  8. ETCD_INITIAL_CLUSTER_STATE="new"
  9. ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
  10. ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.131:2379"

如果使用firewalld作为防火墙,则需要开放端口:

  1. firewall-cmd --zone=public --add-port=2379/tcp --permanent
  2. firewall-cmd --zone=public --add-port=2380/tcp --permanent
  3. firewall-cmd --reload
  4. 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

  1. [root@localhost ~]# yum list|grep docker
  2. docker.x86_64 1.10.3-46.el7.centos.14 @extras
  3. docker-common.x86_64 1.10.3-46.el7.centos.14 @extras
  4. docker-selinux.x86_64 1.10.3-46.el7.centos.14 @extras
  5. cockpit-docker.x86_64 0.114-2.el7.centos extras
  6. docker-devel.x86_64 1.3.2-4.el7.centos extras
  7. docker-distribution.x86_64 2.4.1-2.el7 extras
  8. docker-forward-journald.x86_64 1.10.3-44.el7.centos extras
  9. docker-latest.x86_64 1.12.1-2.el7.centos extras
  10. docker-latest-logrotate.x86_64 1.12.1-2.el7.centos extras
  11. docker-latest-v1.10-migrator.x86_64 1.12.1-2.el7.centos extras
  12. docker-logrotate.x86_64 1.10.3-46.el7.centos.14 extras
  13. docker-lvm-plugin.x86_64 1.10.3-46.el7.centos.14 extras
  14. docker-novolume-plugin.x86_64 1.10.3-46.el7.centos.14 extras
  15. docker-python.x86_64 1.4.0-115.el7 extras
  16. docker-registry.noarch 0.6.8-8.el7 extras
  17. docker-registry.x86_64 0.9.1-7.el7 extras
  18. docker-unit-test.x86_64 1.10.3-46.el7.centos.14 extras
  19. docker-v1.10-migrator.x86_64 1.10.3-46.el7.centos.14 extras
  20. python-docker-py.noarch 1.7.2-1.el7 extras
  21. [root@localhost ~]#

2.2 安装docker

  1. yum install docker -y

2.3 检查docker安装信息

  1. [root@localhost ~]# docker version
  2. Client:
  3. Version: 1.10.
  4. API version: 1.22
  5. Package version: docker-common-1.10.-.el7.centos..x86_64
  6. Go version: go1.6.3
  7. Git commit: cb079f6-unsupported
  8. Built: Fri Sep ::
  9. OS/Arch: linux/amd64
  10. Cannot connect to the Docker daemon. Is the docker daemon running on this host?

3 flannel

3.1 检查flannel版本

  1. [root@localhost etcd]# yum list |grep flannel
  2. flannel.x86_64 0.5.-.el7 @extras

3.2 安装flannel

  1. yum install flannel

3.3 修改service配置

查看flannel的配置文件(使用yum安装会自动生成此文件,如果下载的执行文件则需要手动生成,在使用systemctl命令执行service 的时候会用到),可以看到flannel的service配置如下:

  1. [root@localhost etcd]# more /usr/lib/systemd/system/flanneld.service
  2. [Unit]
  3. Description=Flanneld overlay address etcd agent
  4. After=network.target
  5. After=network-online.target
  6. Wants=network-online.target
  7. After=etcd.service
  8. Before=docker.service
  9.  
  10. [Service]
  11. Type=notify
  12. EnvironmentFile=/etc/sysconfig/flanneld
  13. EnvironmentFile=-/etc/sysconfig/docker-network
  14. ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS
  15. ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
  16. Restart=on-failure
  17.  
  18. [Install]
  19. WantedBy=multi-user.target
  20. RequiredBy=docker.service

其中所有的参数都配置在/etc/sysconfig/flanneld文件中,修改此文件,初始文件如下:

  1. # Flanneld configuration options
  2.  
  3. # etcd url location. Point this to the server where etcd runs
  4. FLANNEL_ETCD="http://127.0.0.1:2379"
  5.  
  6. # etcd config key. This is the configuration key that flannel queries
  7. # For address range assignment
  8. FLANNEL_ETCD_KEY="/atomic.io/network"
  9.  
  10. # Any additional options that you want to pass
  11. FLANNEL_OPTIONS=""

其中

  FLANNEL_ETCD:为ETCD的地址,

  FLANNEL_ETCD_KEY:为在etcd中配置的网络参数的key 

  FLANNEL_OPTIONS:为flannel的启动参数,我在这里加上了监听的网卡

根据前面步骤中etcd的配置,我们修改配置文件如下:

  1. # Flanneld configuration options
  2.  
  3. # etcd url location. Point this to the server where etcd runs
  4. FLANNEL_ETCD="http://192.168.37.130:2379"
  5.  
  6. # etcd config key. This is the configuration key that flannel queries
  7. # For address range assignment
  8. FLANNEL_ETCD_KEY="/flannel/network"
  9.  
  10. # Any additional options that you want to pass
  11. FLANNEL_OPTIONS="--iface=eno16777736"

3.4 启动FLANNEL

可以使用service flanneld start 或者systemctl start flannel启动flannel

3.5 修改docker网络

因为docker需要使用flanneld的网络,因此需要修改docker的service文件:

  1. [Unit]
  2. Description=Docker Application Container Engine
  3. Documentation=http://docs.docker.com
  4. After=network.target rhel-push-plugin.socket
  5. Wants=docker-storage-setup.service
  6.  
  7. [Service]
  8. Type=notify
  9. NotifyAccess=all
  10. #import flannel configuration
  11. EnvironmentFile=-/etc/sysconfig/flanneld
  12. EnvironmentFile=-/run/flannel/subnet.env
  13. EnvironmentFile=-/etc/sysconfig/docker
  14. EnvironmentFile=-/etc/sysconfig/docker-storage
  15. EnvironmentFile=-/etc/sysconfig/docker-network
  16. Environment=GOTRACEBACK=crash
  17. ExecStart=/usr/bin/docker-current daemon \
  18. --exec-opt native.cgroupdriver=systemd \
  19. $OPTIONS \
  20. $DOCKER_STORAGE_OPTIONS \
  21. $DOCKER_NETWORK_OPTIONS \
  22. $ADD_REGISTRY \
  23. $BLOCK_REGISTRY \
  24. $INSECURE_REGISTRY \
  25. --bip=${FLANNEL_SUBNET}
  26. LimitNOFILE=
  27. LimitNPROC=
  28. LimitCORE=infinity
  29. TimeoutStartSec=
  30. MountFlags=slave
  31. Restart=on-abnormal
  32.  
  33. [Install]
  34. WantedBy=multi-user.target

在执行前增加配置文件

EnvironmentFile=-/etc/sysconfig/flanneld

EnvironmentFile=-/run/flannel/subnet.env

执行命令增加参数 --bip=${FLANNEL_SUBNET}

重启docker

  1. systemctl daemon-reload
  2. 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检查当前的网络的准备情况:

  1. [root@localhost system]# ip a
  2. : lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
  3. link/loopback ::::: brd :::::
  4. inet 127.0.0.1/ scope host lo
  5. valid_lft forever preferred_lft forever
  6. inet6 ::/ scope host
  7. valid_lft forever preferred_lft forever
  8. : eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
  9. link/ether :0c:::cf:e3 brd ff:ff:ff:ff:ff:ff
  10. inet 192.168.37.130/ brd 192.168.37.255 scope global dynamic eno16777736
  11. valid_lft 1554sec preferred_lft 1554sec
  12. inet6 fe80::20c:29ff:fe79:cfe3/ scope link
  13. valid_lft forever preferred_lft forever
  14. : flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu qdisc pfifo_fast state UNKNOWN qlen
  15. link/none
  16. inet 172.17.75.0/ scope global flannel0
  17. valid_lft forever preferred_lft forever
  18. : docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu qdisc noqueue state DOWN
  19. link/ether ::e3:f0:0d: brd ff:ff:ff:ff:ff:ff
  20. inet 172.17.75.1/ scope global docker0
  21. valid_lft forever preferred_lft forever

如果看到到flannel0余docker0的网段相同,则网络配置成功。

k8s1.4.3安装实践记录(1)-etcd、docker、flannel安装配置的更多相关文章

  1. k8s1.4.3安装实践记录(2)-k8s安装

    前面一篇已经安装好了ETCD.docker与flannel(k8s1.4.3安装实践记录(1)),现在可以开始安装k8s了 1.K8S 目前centos yum上的kubernetes还是1.2.0, ...

  2. Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性

    在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性.但那是因为 Spring 提供了将上 ...

  3. k8s1.4.3安装实践记录(3)下载基础镜像

    下载基础镜像,因为Google被墙,所以我们用时速云中的镜像来tag docker pull index.tenxcloud.com/google_containers/pause-amd64:3.0 ...

  4. Spring Boot 2 实践记录之 Redis 及 Session Redis 配置

    先说 Redis 的配置,在一些网上资料中,Spring Boot 的 Redis 除了添加依赖外,还要使用 XML 或 Java 配置文件做些配置,不过经过实践并不需要. 先在 pom 文件中添加 ...

  5. Docker的安装和测试

    1,Docker安装 Docker是啥,以及其与虚拟机的对比,就不介绍了,网上有很多资源可以学习和了解. 本篇文章重点介绍Docker的安装和测试使用. Docker的安装,分为离线安装和在线安装两种 ...

  6. Docker的安装(6-13)

    摘自<Docker-从入门到实践> 一.Docker的安装 准备工作 系统要求 Docker CE 支持以下版本的 Ubuntu 操作系统: Artful 17.10 (Docker CE ...

  7. 基于kail的docker下安装sqli-labs

    后面的关卡涉及到转码问题,比如空格,在Windows中会受到限制,比如24关的文件重命名问题,所以在这记录下在docker下安装sqli-labs,在linux下运行就不会受到限制. 参考链接:htt ...

  8. docker 详细安装及问题排查

    一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看 ...

  9. 【转】RHadoop实践系列之二:RHadoop安装与使用

    RHadoop实践系列之二:RHadoop安装与使用 RHadoop实践系列文章,包含了R语言与Hadoop结合进行海量数据分析.Hadoop主要用来存储海量数据,R语言完成MapReduce 算法, ...

随机推荐

  1. vue项目启动

    这篇文章主要用于有源码vue项目安装: 1.安装node.js环境(npm包管理器)前面博客有写到如何安装: 2.vue-cli 脚手架构建工具前面博客有写到如何安装: 3.cnpm  npm的淘宝镜 ...

  2. [转载]python的常用代码模板

    URL:http://blog.csdn.net/xingjiarong/article/details/50651235

  3. Python Django 之 Model

    一.Model建表步骤 1. 2. 3. 二.单表的增删改查 1.insert 1)方法一 book.objects.create( title="疯狂外星人", price=10 ...

  4. L1-014 简单题

    这次真的没骗你 —— 这道超级简单的题目没有任何输入. 你只需要在一行中输出事实:This is a simple problem. 就可以了. 输入样例: 无 输出样例: This is a sim ...

  5. ssh key建立后不能clone问题

    在建立了ssh密钥对之后,要将私钥添加,公钥key添加到gitlab的ssh keys里. 添加成功后,这个时候,你可以clone了! 总结:如果是遇到重复输入密码的情况,可能是ssh-key,的私钥 ...

  6. C++基础之 成员变量初 始化赋值

    摘要: C++成员变量 初始化赋值 你都清楚吗?还有好多坑,好多细节也不知道... 今天在写一个类的时候,由于该类的一个成员变量是引用,所以初始化出现了问题,查了一下之后,才发现,原来引用的初始化和c ...

  7. a demo for how to use QThread

    /******************************************************************* * a demo for how to use QThread ...

  8. 【HAOI2008】玩具命名

    水题大失败 原题: 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自 ...

  9. exec函数簇

    转自:http://www.cppblog.com/prayer/archive/2009/04/15/80077.html 也许有不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既 ...

  10. LeetCode Factorial Trailing Zeroes Python

    Factorial Trailing Zeroes Given an integer n, return the number of trailing zeroes in n!. 题目意思: n求阶乘 ...