在Ubuntu16.04集群上手工部署Kubernetes(未完,陆续补充中)
主机信息
主机 | 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
使用阿里云软件源
安装SSH Server
apt-get install openssh-server
检查SSH Server 是否启动
service ssh status
安装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(未完,陆续补充中)的更多相关文章
- 在Ubuntu16.04集群上手工部署Kubernetes
目前Kubernetes为Ubuntu提供的kube-up脚本,不支持15.10以及16.04这两个使用systemd作为init系统的版本. 这里详细介绍一下如何以非Docker方式在Ubuntu1 ...
- 分布式Hbase-0.98.4在Hadoop-2.2.0集群上的部署
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3898991.html Hbase 是Apache Hadoop的数据库,能够对大数据提 ...
- Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14
目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...
- Spark 论文篇-大型集群上的快速和通用数据处理架构(中英双语)
论文内容: 待整理 参考文献: An Architecture for Fast and General Data Processing on Large Clusters. Matei Zahari ...
- CentOS上手工部署kubernetes集群
本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...
- spark集群搭建(java)未完待续
环境 操作系统:windows10 虚拟机工具:VMware14.1 NUX版本:Centos7.2(64) JDK:1.8(64) 一.安装linux,master(桥接模式上网),slave(na ...
- hadoop进阶----hadoop经验(一)-----生产环境hadoop部署在超大内存服务器的虚拟机集群上vs几个内存较小的物理机
生产环境 hadoop部署在超大内存服务器的虚拟机集群上 好 还是 几个内存较小的物理机上好? 虚拟机集群优点 虚拟化会带来一些其他方面的功能. 资源隔离.有些集群是专用的,比如给你三台设备只跑一个 ...
- 06、部署Spark程序到集群上运行
06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改 ...
- [转载] 把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篇文 ...
随机推荐
- python之路六
面向对象 引言 提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation).Python也是一种支持OOP的动态语言, ...
- Metro下读取txt文件
情况1:txt是Utf8格式的. 读取代码:IList<String> lines = await Windows.Storage.FileIO.ReadLinesAsync(file); ...
- Effective Python2 读书笔记2
Item 14: Prefer Exceptions to Returning None Functions that returns None to indicate special meaning ...
- ASP.NET MVC随想录——漫谈OWIN
什么是OWIN OWIN是Open Web Server Interface for .NET的首字母缩写,他的定义如下: OWIN在.NET Web Servers与Web Application之 ...
- 2017 苹果强制https
苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者更高,TLS 是 SSL 新的别称. ② 通讯中的加密套件配置要求支持列出的正向保密. ...
- UIImage加载本地图片的两种方式
UIImage加载图片方式一般有两种: (1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片 ...
- React学习笔记-2-什么是jsx?如何使用jsx?
什么是jsx? JSX是JavaScript XML 这两个单词的缩写,xml和html非常类似,简单来说可以把它理解成使用各种各样的标签,大家可以自行 百度.所以jsx就是在javascri ...
- 无废话ExtJs 入门教程十七[列表:GridPanel]
无废话ExtJs 入门教程十七[列表:GridPanel] extjs技术交流,欢迎加群(201926085) 在Extjs中,GridPanel用于数据显示,即我们平时说的列表页.在本节中,我们先对 ...
- 移动WEB前端开发资源整合
meta篇 1.视窗宽度 <meta name="viewport" content="width=device-width,initial-scale=1.0,m ...
- Oracle两列字段替换和复制