主机信息

主机 IP OS
k8s-master 10.10.10.20
192.168.0.20
Ubuntu Server 16.04
k8s-node1 10.10.10.21
192.168.0.21
Ubuntu Server 16.04
k8s-node2 10.10.10.22
192.168.0.22
Ubuntu Server 16.04

设置IP

设置ip,dns,路由

使用阿里云软件源

修改软件源

安装SSH Server

apt-get install openssh-server

检查SSH Server 是否启动

 service ssh status

设置当前用户sudo免密码

设置ssh免密登陆

安装Docker

apt-get install docker.io

将用户加入docker组

sudo adduser kube docker

部署etcd集群

在3台主机上部署etcd集群

下载etcd并配置etcd服务

# 设置etcd版本
ETCD_VERSION=${ETCD_VERSION:-"3.1.0"}
ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
# 下载对应版本
curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
# 解压
tar xzf etcd.tar.gz -C ~/kube/etcd
# 集群主机用户
user=kube
# 复制文件到集群主机
cd /tmp/etcd-v${ETCD_VERSION}-linux-amd64
# master节点地址
master=10.10.10.20
# node节点地址
node=(10.10.10.21 10.10.10.22)
# 所有节点地址
for i in "${!node[@]}"; do all[$i]=${node[$i]}; done
all[${#node[@]}]=$master ETCD_INITIAL_CLUSTER=k8s-master=http://$master:2380
for i in "${!node[@]}"; do ETCD_INITIAL_CLUSTER="$ETCD_INITIAL_CLUSTER,kube-node$((i+1))=http://${node[$i]}:2380"; done
echo $ETCD_INITIAL_CLUSTER mkdir -p ~/kube/etcdconf ~/kube/services
# 创建etcd配置文件
sudo cat <<EOF | sudo tee ~/kube/etcdconf/etcd.conf.tmp
ETCD_DATA_DIR=/var/lib/etcd
ETCD_NAME=hostname
ETCD_INITIAL_CLUSTER=$ETCD_INITIAL_CLUSTER
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_LISTEN_PEER_URLS=http://$master:2380
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://$master:2380
ETCD_ADVERTISE_CLIENT_URLS=http://$master:2379
ETCD_LISTEN_CLIENT_URLS=http://$master:2379
GOMAXPROCS=nproc
EOF for h in ${all[@]}; do
    cp ~/kube/etcdconf/etcd.conf.tmp ~/kube/etcdconf/etcd.conf."$h"     sudo sed -i s#ETCD_LISTEN_PEER_URLS=http://"${master}":2380#ETCD_LISTEN_PEER_URLS=http://"$h":2380#g ~/kube/etcdconf/etcd.conf."$h" \
    && sudo sed -i s#ETCD_INITIAL_ADVERTISE_PEER_URLS=http://"${master}":2380#ETCD_INITIAL_ADVERTISE_PEER_URLS=http://"$h":2380#g ~/kube/etcdconf/etcd.conf."$h" \
    && sudo sed -i s#ETCD_ADVERTISE_CLIENT_URLS=http://"${master}":2379#ETCD_ADVERTISE_CLIENT_URLS=http://"$h":2379#g ~/kube/etcdconf/etcd.conf."$h" \
    && sudo sed -i s#ETCD_LISTEN_CLIENT_URLS=http://"${master}":2379#ETCD_LISTEN_CLIENT_URLS=http://"$h":2379#g ~/kube/etcdconf/etcd.conf."$h"
done # 创建etcd服务文件
sudo cat <<EOF | sudo tee ~/kube/services/etcd.service
[Unit]
Description=Etcd Service
Documentation=https://github.com/coreos/etcd
After=network.target [Service]
User=root
Type=simple
EnvironmentFile=-/opt/config/etcd.conf
ExecStart=/opt/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000 [Install]
WantedBy=multi-user.target
EOF user=kube
# 复制文件到 集群主机的~/kube/etcd 目录
for h in ${all[@]}; do ssh $user@$h 'mkdir -p ~/kube/etcd ~/kube/etcdconf ~/kube/services' && scp -r etcd* $user@$h:~/kube/etcd && scp -r ~/kube/etcdconf/etcd.conf."$h" $user@$h:~/kube/etcdconf/etcd.conf && scp -r ~/kube/services/* $user@$h:~/kube/services; done
# 复制文件到 集群主机的/opt/bin目录,清除无用数据
for h in ${all[@]}; do ssh $user@$h 'sudo mkdir -p /opt/bin /var/lib/etcd /opt/config && sudo mv ~/kube/etcd/* /opt/bin && sudo mv ~/kube/etcdconf/* /opt/config && sudo mv ~/kube/services/* /lib/systemd/system && rm -rf ~/kube'; done
# 替换etcd配置文件
for h in ${all[@]}; do ssh $user@$h 'sudo sed -i s/ETCD_NAME=hostname/ETCD_NAME="$(hostname)"/g /opt/config/etcd.conf && sudo sed -i s/GOMAXPROCS=nproc/GOMAXPROCS="$(nproc)"/g /opt/config/etcd.conf'; done
# 启动etcd服务
for h in ${all[@]}; do ssh $user@$h 'sudo systemctl daemon-reload && sudo systemctl enable etcd && sudo systemctl start etcd'; done

下载Flannel

下载flannel并解压到~/kube目录下

下载并编译K8s

下载kubernetes文件并解压到~/kube目录下

部署K8s Master

复制程序文件
FLANNEL_VERSION=0.5. ssh $user@${master} 'mkdir -p ~/kube'
scp kubernetes/server/bin/kube-apiserver \
kubernetes/server/bin/kube-controller-manager \
kubernetes/server/bin/kube-scheduler kubernetes/server/bin/kubelet kubernetes/server/bin/kube-proxy ${user}@${master}:~/kube
scp flannel-${FLANNEL_VERSION}/flanneld ${user}@${master}:~/kube ssh -t ${user}@${master} 'sudo mv ~/kube/* /opt/bin/'

创建证书

在master主机上 ,运行如下命令创建证书

sudo mkdir -p /srv/kubernetes/

sudo chown kube:kube -R /srv
cd /srv/kubernetes export MASTER_IP=172.16.203.133
openssl genrsa -out ca.key
openssl req -x509 -new -nodes -key ca.key -subj "/CN=${MASTER_IP}" -days -out ca.crt
openssl genrsa -out server.key
openssl req -new -key server.key -subj "/CN=${MASTER_IP}" -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days

部署K8s Node

部署

在Ubuntu16.04集群上手工部署Kubernetes(未完,陆续补充中)的更多相关文章

  1. 在Ubuntu16.04集群上手工部署Kubernetes

    目前Kubernetes为Ubuntu提供的kube-up脚本,不支持15.10以及16.04这两个使用systemd作为init系统的版本. 这里详细介绍一下如何以非Docker方式在Ubuntu1 ...

  2. 分布式Hbase-0.98.4在Hadoop-2.2.0集群上的部署

    fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3898991.html Hbase 是Apache Hadoop的数据库,能够对大数据提 ...

  3. Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14

    目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...

  4. Spark 论文篇-大型集群上的快速和通用数据处理架构(中英双语)

    论文内容: 待整理 参考文献: An Architecture for Fast and General Data Processing on Large Clusters. Matei Zahari ...

  5. CentOS上手工部署kubernetes集群

    本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...

  6. spark集群搭建(java)未完待续

    环境 操作系统:windows10 虚拟机工具:VMware14.1 NUX版本:Centos7.2(64) JDK:1.8(64) 一.安装linux,master(桥接模式上网),slave(na ...

  7. hadoop进阶----hadoop经验(一)-----生产环境hadoop部署在超大内存服务器的虚拟机集群上vs几个内存较小的物理机

    生产环境 hadoop部署在超大内存服务器的虚拟机集群上 好 还是  几个内存较小的物理机上好? 虚拟机集群优点 虚拟化会带来一些其他方面的功能. 资源隔离.有些集群是专用的,比如给你三台设备只跑一个 ...

  8. 06、部署Spark程序到集群上运行

    06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改 ...

  9. [转载] 把Nutch爬虫部署到Hadoop集群上

    http://f.dataguru.cn/thread-240156-1-1.html 软件版本:Nutch 1.7, Hadoop 1.2.1, CentOS 6.5, JDK 1.7 前面的3篇文 ...

随机推荐

  1. 【HNOI2008】Cards BZOJ 1004

    Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目 前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张 ...

  2. Unity3D NGUI动态生成模糊背景图

    先上效果. 制作原理:模糊的部分是用UITexture,前面是一个UISprite.用主摄像机渲染出一张纹理,把这张纹理模糊处理,把这张纹理赋值给UITexture. 脚本代码 using Unity ...

  3. ACM/ICPC 之 伞兵-最小割转最大流(POJ3308)

    //以行列建点,伞兵位置为单向边-利用对数将乘积转加法 //最小割转最大流 //Time:63Ms Memory:792K #include<iostream> #include<c ...

  4. MariaDB 多主一从 搭建测试

    背景: 目前MySQL依然只支持一个Slave从一个Master复制数据,虽然也可以做到一主多备(M->S),双主复制(M<->M)等架构,但是局限性依然很大.由于项目的要求,需要各 ...

  5. (iOS逆向工程)class-dump 安装与使用

    class-dump,是可以把OC运行时的声明的信息导出来的工具.说白了,就是可以导出.h文件.用class-dump可以把未经加密的app的头文件导出来.废话不多说.class-dump的下载地址是 ...

  6. MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  7. Centos7设置关闭防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,要想使用iptables必须重新设置一下. 1.关闭防火墙 [root@localhost ~]# systemctl stop firew ...

  8. VNC连接远程Ubuntu设置

    一.windows 远程软件VNCViewer 这个不多说: 下载地址:http://www.realvnc.com/download/viewer/ 二.安装 vnc-server apt-get ...

  9. 【Java EE 学习 43】【SVN版本控制工具】【CVS版本控制工具】

    一.SVN SVN服务器下载地址:https://subversion.apache.org/ 1.什么是版本控制:版本控制是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程.是一种记录若 ...

  10. 三言两语之微信小程序开发初体验(1)

    一.前情   直接切入主题,微信发布了小程序,前端开发者表示,如果不会微信小程序的开发感觉就跟不上时代了,先解答几个容易出现歧义的问题 小程序就叫小程序,不叫应用号,因为apple不准,哈哈 小程序是 ...