Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes for k8s and glusterfs #75

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/docker_net/flannel/ansible/group_vars/etcd_server
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
etcd_ip: 192.168.11.244
etcd_ip: 192.168.1.115
Backend_Type: vxlan
2 changes: 1 addition & 1 deletion apps/docker_net/flannel/ansible/hosts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[etcd_server]
192.168.11.244
192.168.1.115

[flannel_servers]
192.168.11.232
Expand Down
1 change: 1 addition & 0 deletions apps/docker_net/flannel/ansible/site.retry
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
192.168.1.115
22 changes: 22 additions & 0 deletions apps/docker_net/flannel/ansible/site.yml.bak
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
- hosts: etcd_server

roles:
- role: etcd

tasks:
- name: copy flannel-config.json
template: src=flannel-config.json dest=/tmp/flannel-config.json

- name: set flannel-config.json
shell: etcdctl --endpoints=http://{{ etcd_ip }}:2379 set /flannel/network/config < flannel-config.json
args:
chdir: /tmp/


- hosts: flannel_servers

roles:
- role: docker
- role: flannel

18 changes: 18 additions & 0 deletions apps/glusterfs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
* [Introduction](#1)
* [Benchmark Test](#2)
* [Others](#3)

# Network Benchmark Test
## <a name="1">Introduction</a>
Gluster is a software defined distributed storage that can scale to several petabytes. It provides interfaces for object, block and file storage.

## <a name="2">Benchmark Test</a>
### Test Topology
- `vim ansible/hosts` to change your server and client ip address.
- `vim ansible/group_vars/` to change variable related to test.

### Setup
- `./setup.sh` to setup kubernetes in servers.

## <a name="3">Others</a>

4 changes: 4 additions & 0 deletions apps/glusterfs/ansible/hosts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[glusterfs]
192.168.1.86
192.168.1.115
192.168.1.171
1 change: 1 addition & 0 deletions apps/glusterfs/ansible/roles/glusterfs
6 changes: 6 additions & 0 deletions apps/glusterfs/ansible/site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
- hosts: glusterfs
roles:
- role: glusterfs


10 changes: 10 additions & 0 deletions apps/glusterfs/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

CURDIR=$(cd `dirname $0`; pwd)

pushd ${CURDIR}/ansible > /dev/null

ansible-playbook -i hosts site.yml --user=root --extra-vars "ansible_sudo_pass=root"

popd > /dev/null

19 changes: 19 additions & 0 deletions apps/kubernetes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
* [Introduction](#1)
* [Benchmark Test](#2)
* [Others](#3)

# Network Benchmark Test
## <a name="1">Introduction</a>
Kubernetes is an open source system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications.


## <a name="2">Benchmark Test</a>
### Test Topology
- `vim ansible/hosts` to change your server and client ip address.
- `vim ansible/group_vars/` to change variable related to test.

### Setup
- `./setup.sh` to setup kubernetes in servers.

## <a name="3">Others</a>

2 changes: 2 additions & 0 deletions apps/kubernetes/ansible/group_vars/all
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# arm64 or amd64
Arch: arm64
2 changes: 2 additions & 0 deletions apps/kubernetes/ansible/group_vars/etcd_server
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
etcd_ip: 192.168.1.115
Backend_Type: vxlan
2 changes: 2 additions & 0 deletions apps/kubernetes/ansible/group_vars/flannel_servers
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Etcd_Server: 192.168.1.115
Netcard: eth2
9 changes: 9 additions & 0 deletions apps/kubernetes/ansible/hosts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[etcd_server]
192.168.1.115

[kubernetes_master]
192.168.1.86

[kubernetes_minion]
192.168.1.115
192.168.1.171
1 change: 1 addition & 0 deletions apps/kubernetes/ansible/roles/docker
1 change: 1 addition & 0 deletions apps/kubernetes/ansible/roles/etcd
1 change: 1 addition & 0 deletions apps/kubernetes/ansible/roles/flannel
1 change: 1 addition & 0 deletions apps/kubernetes/ansible/roles/kubernetes_common
1 change: 1 addition & 0 deletions apps/kubernetes/ansible/roles/kubernetes_master
1 change: 1 addition & 0 deletions apps/kubernetes/ansible/roles/kubernetes_minion
23 changes: 23 additions & 0 deletions apps/kubernetes/ansible/site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
#- hosts: etcd_server
# roles:
# - role: etcd

- hosts:
- kubernetes_minion
- kubernetes_master
roles:
- docker
- kubernetes_common

- hosts: kubernetes_master
roles:
- kubernetes_master

- hosts: kubernetes_minion
roles:
- kubernetes_minion

- hosts: kubernetes_master
roles:
- kubernetes_glusterfs
10 changes: 10 additions & 0 deletions apps/kubernetes/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

CURDIR=$(cd `dirname $0`; pwd)

pushd ${CURDIR}/ansible > /dev/null

ansible-playbook -i hosts site.yml --user=root --extra-vars "ansible_sudo_pass=root"

popd > /dev/null

18 changes: 11 additions & 7 deletions lib/ansible/roles/docker_net/etcd/tasks/install_etcd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
args:
chdir: /tmp/

- name: transfer start_etcd.sh
template: src=start_etcd.sh dest=/tmp/start_etcd.sh mode=0755
- name: transfer etcd.service
template: src=etcd.service dest=/lib/systemd/system/etcd.service mode=0644

- name: make etcd config dir
file: path=/etc/etcd mode=0644 state=directory
- name: make etcd work dir
file: path=/var/lib/etcd mode=0644 state=directory

- name: transfer etcd config
template: src=etcd.conf dest=/etc/etcd/etcd.conf mode=0644

- name: start etcd
shell: ./start_etcd.sh
async: 10
poll: 0
args:
chdir: /tmp/
service: name=etcd enabled=yes

47 changes: 47 additions & 0 deletions lib/ansible/roles/docker_net/etcd/templates/etcd.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# [member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#ETCD_WAL_DIR=""
#ETCD_SNAPSHOT_COUNT="10000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
#ETCD_LISTEN_PEER_URLS="http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
#ETCD_CORS=""
#
#[cluster]
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.86: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="default=http://localhost:2380"
#ETCD_INITIAL_CLUSTER_STATE="new"
#ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_SRV=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
#
#[proxy]
#ETCD_PROXY="off"
#ETCD_PROXY_FAILURE_WAIT="5000"
#ETCD_PROXY_REFRESH_INTERVAL="30000"
#ETCD_PROXY_DIAL_TIMEOUT="1000"
#ETCD_PROXY_WRITE_TIMEOUT="5000"
#ETCD_PROXY_READ_TIMEOUT="0"
#
#[security]
#ETCD_CERT_FILE=""
#ETCD_KEY_FILE=""
#ETCD_CLIENT_CERT_AUTH="false"
#ETCD_TRUSTED_CA_FILE=""
#ETCD_PEER_CERT_FILE=""
#ETCD_PEER_KEY_FILE=""
#ETCD_PEER_CLIENT_CERT_AUTH="false"
#ETCD_PEER_TRUSTED_CA_FILE=""
#
#[logging]
#ETCD_DEBUG="false"
# examples for -log-package-levels etcdserver=WARNING,security=DEBUG
#ETCD_LOG_PACKAGE_LEVELS=""
18 changes: 18 additions & 0 deletions lib/ansible/roles/docker_net/etcd/templates/etcd.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[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 "ETCD_UNSUPPORTED_ARCH=arm64 GOMAXPROCS=$(nproc) /usr/bin/etcd --name=\"${ETCD_NAME}\" --data-dir=\"${ETCD_DATA_DIR}\" --listen-client-urls=\"${ETCD_LISTEN_CLIENT_URLS}\""
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
23 changes: 23 additions & 0 deletions lib/ansible/roles/glusterfs/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
- name: Transfer GlusterFS repo
template: src=gluster.repo dest=/etc/yum.repos.d/gluster.repo

- name: Install GlusterFS Server
yum: name=glusterfs-server state=present

- name: Install GlusterFS Client
yum: name=glusterfs-client state=present

- name: Enable GlusterFS
service: name=glusterd state=started enabled=yes

- name: Peer Probe
shell: |
servers="{{serverlist}}"
for i in ${servers}; do
gluster peer probe ${i};
done
args:
executable: /bin/bash
vars:
serverlist: "{{groups['glusterfs']|map('extract',hostvars,['ansible_default_ipv4','address'])|join(' ')}}"
11 changes: 7 additions & 4 deletions lib/ansible/roles/kubernetes/kubernetes_common/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
- name: Install kubernetes by yum
yum: pkg=kubernetes state=latest
#- name: Install kubernetes by yum
# yum: pkg=kubernetes state=latest

- name: Judge whether firewalld installed
command: "rpm -q firewalld"
Expand All @@ -10,8 +10,11 @@

- name: Find ip addresses
set_fact:
master_ip: "{{hostvars[groups['masters'][0]]['ansible_default_ipv4']['address']}}"
etcd_ip: "{{hostvars[groups['etcd'][0]]['ansible_default_ipv4']['address']}}"
master_ip_address: "{{hostvars[groups['kubernetes_master'][0]]['ansible_default_ipv4']['address']}}"
etcd_ip_address: "{{hostvars[groups['etcd_server'][0]]['ansible_default_ipv4']['address']}}"

- name: Make kubernetes config dir
file: path=/etc/kubernetes state=directory mode=0644

- name: Write common config file
template: src=config.j2 dest=/etc/kubernetes/config
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"

# How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://{{master_ip}}:8080"
KUBE_MASTER="--master=http://{{master_ip_address}}:8080"
6 changes: 3 additions & 3 deletions lib/ansible/roles/kubernetes/kubernetes_master/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
template: src=apiserver.j2 dest=/etc/kubernetes/apiserver

- name: Write config file for controller-manater
template: src=controller-manater.j2 dest=/etc/kubernetes/controller-manater
template: src=controller-manager.j2 dest=/etc/kubernetes/controller-manager

- name: Write config file for scheduler
template: src=scheduler.j2 dest=/etc/kubernetes/scheduler.j2
template: src=scheduler.j2 dest=/etc/kubernetes/scheduler

- name: Enable apiserver
service: name=kube-apiserver enabled=yes state=started
Expand All @@ -18,5 +18,5 @@
service: name=kube-scheduler enabled=yes state=started

- name: Expose firewalld port for kube-apiserver
firewalld: port-8080/tcmp permanent=false stated=enabled
firewalld: port=8080/tcmp permanent=false state=enabled
when: installed_firewalld.rc == 0
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
# KUBELET_PORT="--kubelet-port=10250"

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers={{etcd_ip_address}}"
KUBE_ETCD_SERVERS="--etcd-servers=http://{{etcd_ip_address}}:2379"

# Address range to use for services
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
###
# kubernetes kubelet (minion) config

KUBELET_API_SERVER="--api_servers=http://{{master_ip_address}}:8080"
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=0.0.0.0"

# The port for the info server to serve on
# KUBELET_PORT="--port=10250"

# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override={{ansible_hostname}}"
KUBELET_HOSTNAME="--hostname-override={{ansible_default_ipv4.address}}"

# Add your own!
KUBELET_ARGS="--cgroup-driver=systemd"
Expand Down
19 changes: 0 additions & 19 deletions lib/ansible/roles/kubernetes/tmp/admin.conf

This file was deleted.

Loading