系统环境:

Ubuntu 16.04.2 LTS

软件环境:

Docker 1.12.6

Go 1.8.3

Etcd 3.1.8

Flannel 0.7.1

Kubernetes master 1.7.0-alpha

安装步骤:

1 安装Docker

1) apt-get update

2) apt-get upgrade

3) apt-get install docker.io

4) service docker restart

5) docker run hello-world

6) docker run -it ubuntu bash

2 安装Go
1) 下载Go语言压缩包
2) 解压压缩包
tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
3) 添加下列环境变量到/etc/profile(for a system-wide installation) or $HOME/.profile
export PATH=$PATH:/usr/local/go/bin
4) 编写hello.Go文件,填写下列内容,放到$HOME/go/src/hello文件夹中
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
5) 测试Go语言环境,$HOME/go/默认为/root/go/
go run ~/go/src/hello/hello.go
 
3 安装Etcd
1) 下载Etcd压缩包

2) 解压Etcd压缩包

tar -xzf etcd-v3.1.8-linux-amd64.tar.gz

3) 拷贝Etcd可执行程序

cd etcd-v3.1.8-linux-amd64

cp etcd etcdctl /usr/bin

4 安装Flannel
1) 下载Flannel压缩包

2) 解压Flannel压缩包

tar -xzf flannel-v0.7.1-linux-amd64.tar.gz

3) 拷贝Flannel可执行程序

cd flannel-v0.7.1-linux-amd64

cp flannelid mk-docker-opts.sh /usr/bin

5 安装K8S
1) 获取K8S Master版本(1.7.0-alpha)

2) 编译K8S

cd kubernetes

make quick-release

编译完成后:

K8S Server文件:~/go/src/kubernetes/_output/release-stage/server/linux-amd64/kubernetes/server/bin

K8S Client文件: ~/go/src/kubernetes/_output/release-stage/client/linux-amd64/kubernetes/client/bin

3) 拷贝K8S Server和Client可执行文件

cd ~/go/src/kubernetes/_output/release-stage/server/linux-amd64/kubernetes/server/bin

cp * /usr/bin

cd ~/go/src/kubernetes/_output/release-stage/client/linux-amd64/kubernetes/client/bin

cp * /usr/bin

注: 下述操作中的10.229.43.237请替换为你安装K8S的主机的IP地址

6 启动和测试Etcd
K8S使用Etcd保存Master和Node节点的信息,所以启动K8S之前需要先启动Etcd
1) 启动Etcd
etcd -initial-advertise-peer-urls http://10.229.43.237:2380 -listen-peer-urls http://10.229.43.237:2380 -listen-client-urls http://10.229.43.237:2379,http://127.0.0.1:2379 -advertise-client-urls http://10.229.43.237:2379 
2) 读写Etcd Key和Value
etcdctl set foo bar

etcdctl get foo

7 启动Flannel并关联Docker
1) 启动Flannel
flanneld
 
2) 设置Etcd配置Flannel
etcdctl set /coreos.com/network/config '{"Network":"172.17.0.0/16"}'
etcdctl set /coreos.com/network/subnets/172.17.10.0-24 '{"PublicIP":"10.229.43.237"}'
 
3) 设置Flannel关联Docker

mk-docker-opts.sh -i
source /run/flannel/subnet.env
rm /var/run/docker.pid
ifconfig docker0 ${FLANNEL_SUBNET}
service docker restart

  
8 启动K8S
1) 启动kube-apiserver
kube-apiserver --address=0.0.0.0  --insecure-port=8080 --service-cluster-ip-range='10.10.10.1/24' --log_dir=/usr/local/kubernete_test/logs/kube --kubelet_port=10250 --v=0 --logtostderr=false --etcd_servers=http://10.229.43.237:2379 --allow_privileged=false 
 
2) 启动kube-controller-manager
kube-controller-manager  --v=0 --logtostderr=false --log_dir=/usr/local/kubernete_test/logs/kube --master=10.229.43.237:8080
 
3) 启动kube-scheduler 
kube-scheduler  --master='10.229.43.237:8080' --v=0  --log_dir=/usr/local/kubernete_test/logs/kube
 
4) 测试master节点是否正常启动
kubectl get componentstatuses
 
5) 启动kube-proxy 
kube-proxy  --logtostderr=false --v=0 --master=http://10.229.43.237:8080
 
6) 启动kubelet  
kubelet  --logtostderr=false --v=0 --allow-privileged=false  --log_dir=/usr/local/kubernete_test/logs/kube  --address=0.0.0.0  --port=10250  --hostname_override=10.229.43.237  --api_servers=http://10.229.43.237:8080
 
7) 在Node上设置集群Context
kubectl config set-cluster test-cluster --server=http://10.229.43.237:8080
kubectl config set-context test-cluster --cluster=test-cluster
kubectl config use-context test-cluster 
 
8) 准备kubernetes/pause镜像
由于K8S Pod需要Pause镜像来启动Pause容器,所以需要准备kubernetes/pause镜像
docker pull docker.io/kubernetes/pause
docker tag f9d5de079539 gcr.io/google_containers/pause:2.0
 
这里相当于是把docker.io重命名为gcr.io,f9d5de079539为拉下来的镜像ID(docker images)
 
9) 确认K8S是否启动成功
kubectl get nodes
  
9 部署Nginx集群
1) 创建Nginx Pods
kubectl run nginx --image=nginx --port=80  --replicas=5
kubectl get pods
 
2) 创建nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port:
targetPort:
selector:
name: nginx 
3) 根据Pods创建Service
kubectl create -f nginx-service.yaml
kubectl get services
 
到此K8S集群部署完成。

Kubernetes单机安装部署的更多相关文章

  1. Hbase单机安装部署

    Hbase单机安装部署 http://blogxinxiucan.sh1.newtouch.com/2017/07/27/Hbase单机安装部署/ 下载Hbase Hbase官网下载地址 http:/ ...

  2. Linux下单机安装部署kafka及代码实现

    技术交流群:233513714 这几天研究了kafka的安装及使用,在网上找了很多教程但是均以失败告终,直到最后想起网络方面的问题最终才安装部署成功,下面就介绍一下kafka的安装部署及代码实现 一. ...

  3. Kubernetes的安装部署

    前言:简述kubernetes(k8s)集群 k8s集群基本功能组件由master和node组成. master节点上主要有kube-apiserver.kube-scheduler.kube-con ...

  4. kubernetes入门(10)kubernetes单机安装后 - helloworld

    前言 查看端口是否被监听了 ::netstat -tlp |grep 31002 我是用的yum install etcd kubernetes docker vim, 这样装的是1.5.2,不是最新 ...

  5. Zookeeper单机安装部署与配置(二)

    在上篇博客中简单介绍了Zookeeper的特点和应用场景,详情可参考:<Zookeeper简介(一)>,那么这篇博客我们介绍一下关于Zookeeper的单机模式安装步骤与配置. 环境准备 ...

  6. hadoop 2.5.1单机安装部署伪集群

    环境:ubuntu 14.04 server 64版本 hadoop 2.5.1 jdk 1.6 部署的步骤主要参考了http://blog.csdn.net/greensurfer/article/ ...

  7. centos7 kubernetes单机安装

    单机版的kubernetes 适合初学者,对kuber有个很好的入门. 因为centos系统内置了安装源.我们可以直接安装 1.yum install -y etco kubernetes 2.whe ...

  8. Redis单机安装部署

    1.下载: redis-4.0.8.tar.gz,存放至/data/tools下,解压: # wget http://download.redis.io/releases/redis-4.0.8.ta ...

  9. elk单机安装部署

    es 下载地址:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.t ...

随机推荐

  1. 阿里云云主机添加swap分区与swap性能优化

    1.swap的功能与相应内核参数 Linux 将物理内存分为内存段的部分被称作“页面”.交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放用于页面的内存.物理内存和交换空间 ...

  2. Mac OS X Yosemite & Arduino安装CH340 USB转串口驱动

    新买的Arduino开发板 USB转串口使用了CH340芯片,在Mac OS X Yosemite上正常安装驱动后,在Arduino IDE的端口没发现相应的设备,使用以下方法后就能使用USB转串口调 ...

  3. [LeetCode 题解]: pow(x,n)

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Implement po ...

  4. 学习笔记之Struts2—浅析接收参数

    最近自己通过视频与相关书籍的学习,对action里面接收参数做一些总结与自己的理解. 0.0.接收参数的(主要)方法   使用Action的属性接收参数 使用DomainModel接收参数 使用Mod ...

  5. [自动化专题]JDBC操作mysql时遇到的拦路虎

    在挫折中成长,在错误中学习.聊聊我们在Selenium自动化中使用JDBC操作mysql数据库中遇到的那些拦路虎: 错误一:Can not issue data manipulation statem ...

  6. 使用git命令提示“不是内部或外部命令

    问题描述: 打开windows的cmd,在里面打git命令会提示“不是内部或外部命令,也不是可运行的程序” 解决办法: 找到git安装路径中bin的位置,如:D:\Program Files\Git\ ...

  7. 201621123023《Java程序设计》第6周学习总结

    一.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 二.书面作业 1. clone方法 1.1 在te ...

  8. iOS应用开发权限请求处理

    1.写在前面 APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事: 那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式: 1 ...

  9. 936. Stamping The Sequence

    You want to form a target string of lowercase letters. At the beginning, your sequence is target.len ...

  10. L365

    When I started my company nine years ago, I was a young, inexperienced founder without much capital. ...