Kubernetes(二)-- 搭建(未完待续)
一、部署前规划
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(二)-- 搭建(未完待续)的更多相关文章
- virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...
- 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))
Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...
- git安装与使用,未完待续... ...
目录 一.git概念 二.git简史 三.git的安装 四.git结构 五.代码托管中心-本地库和远程库的交互方式 六.初始化本地仓库 七.git常用命令 1.add和commit命令 2.sta ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 我的SQL总结---未完待续
我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...
- MVC丶 (未完待续······)
希望你看了此小随 可以实现自己的MVC框架 也祝所有的程序员身体健康一切安好 ...
- 一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
- GitHub 入门不完全指南(未完待续)
我一直认为 GitHub 是一座宝藏,想让更多人的知道它.加入到这个社区中.本人能力有限,如果文中出现不对的地方,欢迎指正交流. 一.前言 大家好,我是削微寒(xuē wēi hán),一个走在进阶路 ...
- Java开发中的23+2种设计模式学习个人笔记(未完待续)
注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...
- 命令行操作mysql 未完待续......
复制数据表 create table 新表 like 旧表: 删除表中某个字段 alter table 表名 drop column 字段; 例子: alter table news_apply_lo ...
随机推荐
- bootstrap学习笔记(网页开发小知识)
这是我在学习Boostrap网页开发时遇到的主要知识点: 1.导航条navbar 添加.navbar-fixed-top类可以让导航条固定在顶部,固定的导航条会遮住页面上的其他内容,除非给<bo ...
- PHP读取Excel类文件
想要使用PHP读取Excel文件必然要用到PHPExcel开源类库,网上资源应该挺多的.但是每一种的操作必然都是不同的,可原理应该都是大同小异. 这个文件夹里包含的就是PHPExcel类文件,在外面还 ...
- 浏览器根对象window之值为数值的属性
1. number属性 1.1 length length 属性返回在当前窗口中frames的数量(包括IFRAMES). 该属性值与window.frames.length属性值相等. 1.2 in ...
- LintCode2016年8月8日算法比赛----等价二叉树
等价二叉树 题目描述 检查两棵二叉树是否等价.等价意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数据相等. 样例 1 1 / \ / \ 2 2 and 2 2 / / 4 ...
- 在AndroidStudio中数据存储第三方数据管理Bmob的使用
---恢复内容开始--- 在日常写代码的过程中我们比较痛苦的就是数据库的建立和使用,那么今天来介绍一下一个第三方的数据管理平台Bmonb. 一.我们首先进入Bmob的官网创建一个账号 Bome官网网址 ...
- webpack学习笔记丁点积累
webpack是什么? https://webpack.js.org/concepts/ https://code.tutsplus.com/tutorials/introduction-to-web ...
- 微软在WPC 2015中为“伙伴们”带来了什么?
在微软 WPC 2015(微软全球合作伙伴大会)上,微软全球渠道总监 Phil Sorgen 指出,微软总营收的 92% 来自合作伙伴.这句话验证了微软与合作伙伴间日益紧密的合作关系,也点出了本次大会 ...
- 【Git】创建一个空分支
1 创建一个分支 使用参数 --orphan,这个参数的主要作用有两个,一个是拷贝当前所在分支的所有文件,另一个是没有父结点,可以理解为没有历史记录,是一个完全独立背景干净的分支. 参考git的帮助文 ...
- composer 应用【Modern PHP】
目录 安装(linux) composer.lock 文件 composer.josn 文件 自动加载PHP组件 组件包库地址 实例 composer私有仓库 composer 遵循PSR准则,解决安 ...
- 乘风破浪:LeetCode真题_019_Remove Nth Node From End of List
乘风破浪:LeetCode真题_019_Remove Nth Node From End of List 一.前言 这次总算到了链表的操作了,之后肯定会有排序算法,二叉树,排序树,图等等的操作,现在我 ...