kubernetes 快捷安装

组件版本

kubernetes v1.8.4

etcd v3.2.10

docker 17.09.0-ce

部署节点------x1 : 运行这份 ansible 脚本的节点

etcd节点------x3 : 注意etcd集群必须是1,3,5,7...奇数个节点

master节点----x2 : 根据实际集群规模可以增加节点数,需要额外规划一个master VIP(虚地址)

lb节点--------x2 : 负载均衡节点两个,安装 haproxy+keepalived

node节点------x3 : 真正应用负载的节点,根据需要增加机器配置和节点数


部署步骤

在每个节点安装依赖工具

mv /etc/yum.repos.d/backup/CentOS-* /etc/yum.repos.d/;rm -rf /etc/yum.repos.d/local.repo

yum clean all

yum install epel-release -y

yum update

wget -P /usr/bin/ http://192.168.12.57/zip/cni-docker-config; chmod a+x /usr/bin/cni-docker-config


在deploy节点安装准备ansible

yum install ansible -y

免密码登录配置(安装需要)

ssh-keygen -t rsa -b 2048

ssh-copy-id $nodes

删除默认ansible配置;

rm -rf /etc/ansible

wget -P /etc/ http://192.168.12.57/zip/ansible.zip;cd /etc;unzip /etc/ansible.zip

修改HOSTS文件

vim /etc/ansible/hosts

# 部署节点:运行这份 ansible 脚本的节点

[deploy]

192.168.100.24

# etcd集群请提供如下NODE_NAME、NODE_IP变量

# 请注意etcd集群必须是1,3,5,7...奇数个节点

[etcd]

192.168.100.24 NODE_NAME=etcd1 NODE_IP="192.168.100.24"

192.168.100.25 NODE_NAME=etcd2 NODE_IP="192.168.100.25"

192.168.100.26 NODE_NAME=etcd3 NODE_IP="192.168.100.26"

[kube-master]

192.168.100.24 NODE_IP="192.168.100.24"

192.168.100.25 NODE_IP="192.168.100.25"

# 负载均衡至少两个节点,安装 haproxy+keepalived

# 根据master节点数量同步修改roles/lb/templates/haproxy.cfg.j2

[lb]

192.168.100.24 LB_IF="br0" LB_ROLE=master

192.168.100.25 LB_IF="br0" LB_ROLE=backup

[lb:vars]

LB_EP1="192.168.100.24:6443"    # api-server 实际成员地址端口

LB_EP2="192.168.100.25:6443"    # api-server 实际成员地址端口

MASTER_IP="192.168.100.29"      # api-server 虚地址

MASTER_PORT="8443"              # api-server 服务端口

#确保node节点有变量NODE_ID=node1

[kube-node]

192.168.100.24 NODE_ID=node1 NODE_IP="192.168.100.24"

192.168.100.25 NODE_ID=node2 NODE_IP="192.168.100.25"

192.168.100.26 NODE_ID=node3 NODE_IP="192.168.100.26"

[kube-cluster:children]

kube-node

kube-master

# 如果启用harbor,请配置后面harbor相关参数

[harbor]

#192.168.1.8 NODE_IP="192.168.1.8"

# 预留组,后续添加node节点使用

[new-node]

#192.168.1.xx NODE_ID=node6 NODE_IP="192.168.1.xx"

#192.168.1.xx NODE_ID=node7 NODE_IP="192.168.1.xx"

[all:vars]

# ---------集群主要参数---------------

#集群 MASTER IP, 需要负载均衡,一般为VIP地址

MASTER_IP="192.168.100.29"

KUBE_APISERVER="https://192.168.100.29:8443"

#pause镜像地址

POD_INFRA_CONTAINER_IMAGE=mirrorgooglecontainers/pause-amd64:3.0

#TLS Bootstrapping 使用的 Token,使用 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成

BOOTSTRAP_TOKEN="c30302226d4b810e08731702d3890f50"

# 服务网段 (Service CIDR),部署前路由不可达,部署后集群内使用 IP:Port 可达

SERVICE_CIDR="10.68.0.0/16"

# POD 网段 (Cluster CIDR),部署前路由不可达,**部署后**路由可达

CLUSTER_CIDR="172.20.0.0/16"

# 服务端口范围 (NodePort Range)

NODE_PORT_RANGE="20000-40000"

# kubernetes 服务 IP (预分配,一般是 SERVICE_CIDR 中第一个IP)

CLUSTER_KUBERNETES_SVC_IP="10.68.0.1"

# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)

CLUSTER_DNS_SVC_IP="10.68.0.2"

# 集群 DNS 域名

CLUSTER_DNS_DOMAIN="cluster.local."

# etcd 集群间通信的IP和端口, **根据实际 etcd 集群成员设置**

ETCD_NODES="etcd1=https://192.168.100.24:2380,etcd2=https://192.168.100.25:2380,etcd3=https://192.168.100.26:2380"

# etcd 集群服务地址列表, **根据实际 etcd 集群成员设置**

ETCD_ENDPOINTS="https://192.168.100.24:2379,https://192.168.100.25:2379,https://192.168.100.26:2379"

# 集群basic auth 使用的用户名和密码

BASIC_AUTH_USER="admin"

BASIC_AUTH_PASS="test1234"

# ---------附加参数--------------------

#默认二进制文件目录

bin_dir="/root/local/bin"

#证书目录

ca_dir="/etc/kubernetes/ssl"

#部署目录,即 ansible 工作目录,建议不要修改

base_dir="/etc/ansible"

#私有仓库 harbor服务器 (域名或者IP)

#HARBOR_IP="192.168.1.8"

#HARBOR_DOMAIN="harbor.yourdomain.com"

#ansible all -m ping 测试部署节点

ansible准备好之后在每台服务器上安装openvswitch

由于loadbalance的rip在K8Snode 的网桥上,所以需要先配置openvswitch才可以安装。

openvswitch部署

wget http://192.168.12.57/zip/openvswitch-2.5.0.tar.gz;tar -zxvf openvswitch-2.5.0.tar.gz;mkdir -p ~/rpmbuild/SOURCES;sed 's/openvswitch-kmod, //g' openvswitch-2.5.0/rhel/openvswitch.spec > openvswitch-2.5.0/rhel/openvswitch_no_kmod.spec;cp openvswitch-2.5.0.tar.gz rpmbuild/SOURCES;rpmbuild -bb --without=check ~/openvswitch-2.5.0/rhel/openvswitch_no_kmod.spec;yum localinstall rpmbuild/RPMS/x86_64/openvswitch-2.5.0-1.x86_64.rpm -y;


完成后使用命令创建网桥规范命名用br0

ovs-vsctl add-br br0

将网卡桥接入br0

ovs-vsctl add-port br0 eth0

开始从ansible安装k8s

cd /etc/ansible;ansible-playbook 90.setup.yml

完成后

kubectl get node 

会发现节点NotReady,日志提示/etc/cni/net.d/  NotFound

执行

wget -P /etc/cni/net.d/ http://192.168.12.57/zip/10-mynet.conf


cat 10-mynet.conf

{

    "cniVersion": "0.3.0",

    "name": "mynet",网络名称

    "type": "auto_ip",###容器分配IP插件  在/opt/cni/bin可以找到

    "bridge": "br0",##桥接网卡名称

    "etcd_endpoints":"https://192.168.103.24:2379",##etcd服务器地址

    "isDefaultGateway": true,

    "forceAddress": false,

    "ipMasq": true,

    "hairpinMode": true,

    "ipam": {

        "type": "host-local",##默认地址/opt/bin/cni

        "subnet": "192.168.100.0/22",  ##子网掩码

        "rangeStart":"192.168.100.31",##节点网段IP地址起始地址(每台机一个地址段)

        "rangeEnd":"192.168.102.2",##节点网段IP地址结束地址

        "gateway":"192.168.103.254"##网关

    }

}


配置/opt/cni/bin

cd /opt/

wget http://192.168.12.57/zip/cni.zip;unzip cni.zip

在master上修改配置文件/etc/haproxy.cfg, 可以listen新增proxyIP

listen kube-master

        bind 0.0.0.0:8443

        mode tcp

        option tcplog

        balance source

        server s1 192.168.102.1:6443  check inter 10000 fall 2 rise 2 weight 1

        server s2 192.168.102.2:6443  check inter 10000 fall 2 rise 2 weight 1

执行 ln -s /root/local/bin/docker /bin/docker (如果cni-docker-config找不到docker命令的话)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279