一、部署前规划

1. 操作系统初始化设置 :需要设置好集群机器,关闭防火墙和selinux

2. 创建ca证书和私钥 :集群间通信要加密,那么肯定要有ca的创建,以后就用这一步创建的ca当作证书颁发机构给自己发证书,也可通过配置文件省略

3. docker安装与卸载 :k8s基于docker,要先安装docker

4. harbor安装 :有了docker之后,需要用到docker仓库,这里搭建一个镜像仓库平台,便于管理

5. harbor使用 :上传和下载镜像,设置共有和私有

6. 部署etcd集群 :k8s用etcd进行服务发现。比如集群节点间报告自己的状态及可以提供的服务,就用etcd实现。所以要先安装etcd

7. 部署flannel网络 :集群间有自己的集群间网络,这个靠flannel来实现,所以要安装flannel

8. 部署master节点 :主集群节点,管理节点

9. 部署node节点 :服务端阶段

10. 部署dns插件 :Kubenetes以插件的形式提供DNS服务,一般是运行在kube-system名称空间下的service,拥有固定IP地址。

          插件运行起来后,配置各个节点上的kubelet,告诉它集群中DNS服务的IP地址,kebelet在

           启动容器时再将DNS服务器的地址告诉容器,容器再使用此DNS服务器进行域名解析。

11. 部署dashboard插件 :k8s的图形化界面

12. 部署heapster插件:更好支持原生的k8s

二、centos 7环境部署

 1.基础环境

  1).机器情况

    master:192.168.11.199
    node:192.168.11.196

  

  2).关闭防火墙和selinux

     # systemctl stop firewalld

     # systemctl disable firewalld

     # setenforce 

三、创建ca证书和私钥

  1.生成CA私钥(.key):

 # openssl genrsa -out ca.key              //2048,安全性更高

  

  2.生成CA证书请求(.csr):

 # openssl req -new -key ca.key -out ca.csr

  

  

  3.自签名得到根证书(.crt):

 # openssl x509 -req -days  -in ca.csr -signkey ca.key -out ca.crt

  

  

  4.生成三个文件

  

四、安装docker-ce + docker-compose (脚本安装)

 # vim docker.sh
#!/bin/bash
# coding: utf-
# Copyright (c)
set -e #返回值为0时,退出脚本
echo "1. 备份yum"
{
for i in /etc/yum.repos.d/*.repo;do cp $i ${i%.repo}.bak;done
rm -rf /etc/yum.repos.d/*.repo
} || {
echo "备份出错,请手动执行"
exit 1
} echo "2. 获取网络yum"
{
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo >/dev/null 2>&1
wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo >/dev/null 2>&1
yum clean >/dev/null 2>&1
yum repolist >/dev/null 2>&1
} || {
echo "获取出错,请手动执行"
exit 1
} echo "3. 安装docker-ce......"
{
yum -y install yum-utils >/dev/null 2>&1
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo >/dev/null 2>&1
yum clean >/dev/null 2>&1
yum repolist >/dev/null 2>&1
yum -y install epel-release docker-ce >/dev/null 2>&1
} || {
echo "安装出错,请手动安装"
exit 1
} systemctl start docker >/dev/null 2>&1
systemctl enable docker >/dev/null 2>&1 echo "4. 添加内和参数"
{
cat <<EOF>> /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p >/dev/null 2>&1
} echo "5. 添加镜像加速"
{
cat <<EOF>> /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
EOF
} echo "6.安装docker-compose"
{
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
} || {
echo "安装出错,请手动安装"
exit 1
} systemctl daemon-reload >/dev/null 2>&1
systemctl restart docker >/dev/null 2>&1 rm -rf ./*.sh

五、harbor安装

  1.下载harbor包

     在线安装:# wget -P /usr/local/src/     https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-online-installer-v1.2.0.tgz

     离线安装:# wget https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz

  2.解压到/usr/local:# tar xvf harbor-online-installer-v1.2.0.tgz -C /usr/local

     

  3.查看解压目录

     

  4.修改hostname:# vim harbor.cfg

          hostname  manager

  5.执行安装脚本:./install.sh

     

  

  6..查看进程:# docker  ps 或者 docker-compose  ps

     

  7.登录:http://192.168.11.199,用户名:admin ,密码:Harbor12345

      

    

  8.修改镜像加速地址为harbor仓库的地址

      # rm -rf /etc/docker/daemon.json

      # vim /usr/lib/systemd/system/docker.service

        --insecure-registry 192.168.11.199

       

  9.重新加载daemon和docker

      # systemctl daemon-reload

      # systemctl restart docker

  10.定制镜像,用于上传和下载

      # vim  Dockerfile    

        FROM centos:centos7.1.1503    //基础镜像是centos,版本为7.1

        ENV TZ "Asia/Shanghai"      //设置系统的时区为上海

      # docker build -t 192.168.11.199/library/centos7.1:0.1 .

     

  

   11.测试上传与下载

    1).登录仓库:  # docker login 192.168.11.199 

     

    2).上传镜像

      # docker image ls -a

      # docker push 192.168.11.199/library/centos7.1

     

   

     3).下载任意镜像:  # docker pull nginx

    

    4).打标签: # docker tag nginx:latest 192.168.11.199/library/nginx.v1

    5).上传:  # docker push 192.168.11.199/library/nginx.v1  

    

  

    6).删除镜像:  #docker image rm 192.168.11.199/library/nginx.v1:latest

    7).重新从私有仓库拉取:  # docker pull 192.168.11.199/library/nginx.v1       

    

  12.harbor配置TLS证书

     1).修改harbor配置文件:  # vim /usr/local/harbor/harbor.cfg

                    ui_url_protocol = https     

                    ssl_cert = /home/ssl/ca.crt

                    ssl_cert_key = /home/ssl/ca.key

    

     2).重启harbor:# ./install.sh

    

    

  

    因为证书是自签的,所以谷歌会拦截警告

        

六、部署etcd集群

  1.master节点安装etcd和kubernetes-master:     # yum -y install etcd kubernetes-master

  2.修改etcd配置文件,设置监听地址:  # vim /etc/etcd/etcd.conf

                      ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

                     

  3.修改k8s api配置:# vim /etc/kubernetes/apiserver

            KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

  4.配置kubernetes使用token请求

    不配置的话,直接删除ServiceAccount:

        KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

    配置: # vim /etc/kubernetes/apiserver             

        KUBE_API_ARGS="--service_account_key_file=/home/ssl/ca.key"

        

        # vim /etc/kubernetes/controller-manager

        KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/home/ssl/ca.key"

        

  5.启动etcd、kube-apiserver、kube-controller-manager、kube-scheduler服务:

        # for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done

七、部署flannel网络

  1.在etcd中定义flannel网络:# etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

  2.在node节点上安装flannel和kubernetes-node:

      # yum -y install epel-release
      # yum -y install flannel kubernetes-node

  3.为flannel网络指定etcd服务,修改/etc/sysconfig/flanneld文件     

      # vim /etc/sysconfig/flanneld
        FLANNEL_ETCD_ENDPOINTS="http://192.168.11.199:2379"       //客户端IP

  4.修改/etc/kubernetes/config文件

    # vim /etc/kubernetes/config
      KUBE_MASTER="--master=http://192.168.11.199:8080"

  5. 修改对应minion机器上的配置文件/etc/kubernetes/kubelet

    # vim /etc/kubernetes/kubelet
      KUBELET_ADDRESS="--address=0.0.0.0"
      KUBELET_HOSTNAME="--hostname-override=192.168.11.196"
      KUBELET_API_SERVER="--api-servers=http://192.168.11.199:8080"

    

  6.在所有minion节点上启动kube-proxy,kubelet,docker,flanneld等服务,并设置开机启动。

    # for SERVICES in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES; done

  7.验证集群

    # kubectl get node
    # kubectl -s http://192.168.11.199:8080 get node

八、部署服务

  1.

    

    

    

      

       

    

  

Kubernetes(二)-- 搭建(未完待续)的更多相关文章

  1. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

  2. 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))

    Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...

  3. git安装与使用,未完待续... ...

    ​ 目录 一.git概念 二.git简史 三.git的安装 四.git结构 五.代码托管中心-本地库和远程库的交互方式 六.初始化本地仓库 七.git常用命令 1.add和commit命令 2.sta ...

  4. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  5. 我的SQL总结---未完待续

    我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...

  6. MVC丶 (未完待续······)

         希望你看了此小随 可以实现自己的MVC框架     也祝所有的程序员身体健康一切安好                                                     ...

  7. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

  8. GitHub 入门不完全指南(未完待续)

    我一直认为 GitHub 是一座宝藏,想让更多人的知道它.加入到这个社区中.本人能力有限,如果文中出现不对的地方,欢迎指正交流. 一.前言 大家好,我是削微寒(xuē wēi hán),一个走在进阶路 ...

  9. Java开发中的23+2种设计模式学习个人笔记(未完待续)

    注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...

  10. 命令行操作mysql 未完待续......

    复制数据表 create table 新表 like 旧表: 删除表中某个字段 alter table 表名 drop column 字段; 例子: alter table news_apply_lo ...

随机推荐

  1. P1025[SCOI2009]游戏

    windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按 顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们对应的数字.然后又在新的 ...

  2. vue如何下载报表

    _export() { const _c = this.$createElement; this.$msgbox({ title: '请确认', showCancelButton: true, con ...

  3. VS2010项目转换成VS2008

    声明:本篇文章不是本人原创,但是网站的地址没有记下来,所以不能贴出来.但此方法本人亲自验证有效. 一.将.sln文件中的 Microsoft Visual Studio Solution File, ...

  4. Python power spectral 功率谱

    You can also use scipy.signal.welch to estimate the power spectral density using Welch’s method. Her ...

  5. Vue 框架-01- 入门篇 图文教程

    Vue 框架-01- 入门篇 图文教程 Vue 官网:https://cn.vuejs.org/ 关于 Vue 的基础大家可以在官网的[起步]去学习,本系列文章主要针对实例项目应用 一.Vue 的安装 ...

  6. spring mvc拦截器HandlerInterceptor

    本文主要介绍springmvc中的拦截器,包括拦截器定义和的配置,然后演示了一个链式拦截的测试示例,最后通过一个登录认证的例子展示了拦截器的应用 拦截定义 定义拦截器,实现HandlerInterce ...

  7. 在 Azure 虚拟机中配置 Always On 可用性组(经典)

    在开始之前,请先假设现在可以在 Azure Resource Manager 模型中完成此任务. 我们建议使用 Azure Resource Manager 模型来进行新的部署. 请参阅 Azure ...

  8. .net core系列之《对AOP思想的理解及使用AspectCore实现自定义日志拦截》

    对于AOP这个名词,相信对于搞过MVC开发的人来说,都很熟悉,里面各种各样的Filter简直是将AOP体现到了极致. 那么什么是AOP呢? AOP(Aspect Oriented Programmin ...

  9. CentOS7路由、端口和服务排障常用命令

    1. ip route   显示主机基本路由信息 ~]# ip route default via 172.25.0.254 dev eth0  proto static  metric 1024 1 ...

  10. Excel操作之级联菜单

    设置级联菜单主要用的是excel的数据验证功能.下面以简单的设置城市选择框为例: 1.准备好数据 2.给所有省份起个名称(例如:省份),然后同样方法给每个省份所对应的城市以其省份命名,(例如:南京.苏 ...