2016/11/16 23:39:58

环境: centos7
  1. [fu@centos server]$ uname -a
  2. Linux centos 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux


1. 初始化环境

关闭防火墙:
  1. [root@k8s-master fu]# systemctl stop firewalld
  2. [root@k8s-master fu]# systemctl disable firewalld

1.1 环境:

节点 IP
node-1 192.168.44.129
node-2 192.168.44.131
node-3 192.168.44.132

1.2 设置hostname

hostnamectl --static set-hostname hostname
IP hostname
192.168.44.129 k8s-master
192.168.44.131 k8s-node-1
192.168.44.132 k8s-node-2

master:
  1. [root@centos fu]# hostnamectl --static set-hostname k8s-master
node-1
  1. [root@centos fu]# hostnamectl --static set-hostname k8s-node-1
node-2
  1. [root@centos fu]# hostnamectl --static set-hostname k8s-node-2

1.3 配置 hosts

  1. vi /etc/hosts

IP hostname

192.168.44.129

k8s-master

192.168.44.131

k8s-node-1

192.168.44.132

k8s-node-2

分别在hosts中加入:
  1. 192.168.44.129 k8s-master
  2. 192.168.44.131 k8s-node-1
  3. 192.168.44.132 k8s-node-2

或者,直接执行,在hosts中追加:
  1. echo '192.168.44.129 k8s-master
  2. 192.168.44.131 k8s-node-1
  3. 192.168.44.132 k8s-node-2' >> /etc/hosts

1.4安装kubelet 和kubeadm

添加yum  (注:root用户下执行)

  1. cat <<EOF > /etc/yum.repos.d/k8s.repo
  2. [kubelet]
  3. name=kubelet
  4. baseurl=http://files.rm-rf.ca/rpms/kubelet/
  5. enabled=1
  6. gpgcheck=0
  7. EOF
安装并启动:
  1. yum install docker kubelet kubeadm kubectl kubernetes-cni
  2. systemctl enable docker && systemctl start docker
  3. systemctl enable kubelet && systemctl start kubelet

2 部署 kubernetes master

2.1 添加yum(如环境统一处理,此处略过)

注:root用户下执行
  1. cat <<EOF> /etc/yum.repos.d/k8s.repo
  2. [kubelet]
  3. name=kubelet
  4. baseurl=http://files.rm-rf.ca/rpms/kubelet/
  5. enabled=1
  6. gpgcheck=0
  7. EOF

安装 kubernetes依赖环境:
yum有很多源,大多是网络上的。makecache建立一个缓存,以后用install安装软件时就在缓存中搜索,提高了速度。
  1. [root@k8s-master fu]# yum makecache
  2. [root@k8s-master fu]# yum install -y socat kubelet kubeadm kubectl kubernetes-cni

 

2.2 安装docker

  1. wget -qO- https://get.docker.com/ | sh
如果提示:
  1. bash: wget: 未找到命令
则先安装wget:
  1. [root@centos fu]# yum -y install wget
如果已经安装过dokcer则可直接启动:
提示未启动:
  1. [root@centos fu]# docker images
  2. Cannot connect to the Docker daemon. Is the docker daemon running on this host?

 
docker设为开机启动并启动:
  1. systemctl enable docker
  2. systemctl start docker

2.3 下载镜像

  1. images=(kube-proxy-amd64:v1.4.5 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.5 kube-controller-manager-amd64:v1.4.5 kube-apiserver-amd64:v1.4.5 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
  2. for imageName in ${images[@]} ; do
  3. docker pull jicki/$imageName
  4. docker tag jicki/$imageName gcr.io/google_containers/$imageName
  5. docker rmi jicki/$imageName
  6. done

2.4 启动 kubernetes

  1. systemctl enable kubelet
  2. systemctl start kubelet

2.5 创建集群

  1. kubeadm init --api-advertise-addresses=192.168.44.129 --use-kubernetes-version v1.4.5

如提示:

  1. Running pre-flight checks
  2. preflight check errors:
  3. /etc/kubernetes is not empty

则:
  1. [root@k8s-master kubernetes]# rm -rf manifests/
然后再执行 init

2.6 记录 token

init打出的日志,把加入集群的token记录下来。
  1. Kubernetes master initialised successfully!
  2. You can now join any number of machines by running the following on each node:

  3. kubeadm join --token=a46536.cad65192491d2fd9 192.168.44.129

2.7 检查 kubelet 状态

  1. systemctl status kubelet
 
2.8 查询集群pods:
  1. [root@k8s-master system]# kubectl get nodes
 

3 部署 kubernetes node

3.1 安装docker

  1. wget -qO- https://get.docker.com/ | sh
如果提示:
  1. bash: wget: 未找到命令
则先安装wget:
  1. [root@centos fu]# yum -y install wget
设置docker开机启动并启动:
  1. systemctl enable docker
  2. systemctl start docker

3.2 下载镜像

  1. images=(kube-proxy-amd64:v1.4.5 kube-discovery-amd64:1.0 kubedns-amd64:1.7 kube-scheduler-amd64:v1.4.5 kube-controller-manager-amd64:v1.4.5 kube-apiserver-amd64:v1.4.5 etcd-amd64:2.2.5 kube-dnsmasq-amd64:1.3 exechealthz-amd64:1.1 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.4.1)
  2. for imageName in ${images[@]} ; do
  3. docker pull jicki/$imageName
  4. docker tag jicki/$imageName gcr.io/google_containers/$imageName
  5. docker rmi jicki/$imageName
  6. done

3.3 安装并启动 kubernetes(如环境统一处理,此处略过)

可以按上面先指定yum源,速度会有提升
  1. yum makecache
  2. yum install -y socat kubelet kubeadm kubectl kubernetes-cni

  1. systemctl enable kubelet
  2. systemctl start kubelet

3.4 加入集群

复制自己master创建集群的返回值
  1. kubeadm join --token=a46536.cad65192491d2fd9 192.168.44.129
返回如下错误,须手动清空该目录
 
如果此错误,请查看防火墙或selinux
 
返回:
 
都加入成功后,通过get nodes查看集群状态:
 
重启机器会有延迟:
 

4 设置 kubernetes

  1. [fu@k8s-master ~]$ kubectl apply -f https://git.io/weave-kube
  2. daemonset "weave-net" created


4.2 查看系统服务状态

查看所有的namespaces中的pods

  1. [fu@k8s-master ~]$ kubectl get pods --all-namespaces

 
kube-dns 必须配置完网络才能 Running

4.3 其他主机控制集群
将master中文件,/etc/kubernetes/admin.conf拷贝到其它node节点,可以下载再上传,也可以主机间拷贝

主机间拷贝:

  1. [root@k8s-master fu]# scp admin.conf fu@192.168.44.131:/home/fu
  2. [root@k8s-master fu]# scp admin.conf fu@192.168.44.132:/home/fu

复制文件命令格式:scp local_file remote_username@remote_ip:remote_folder
 

node节点查询集群nodes状态命令:

  1. [fu@k8s-node-2 ~]$ kubectl --kubeconfig ./admin.conf get nodes
可以看到跟在master上运行效果一样:
 

想看一下admin.conf是啥,可以more或cat,more按空格分页

  1. [root@k8s-master fu]# more admin.conf

4.4 配置dashboard

#在master节点下载 yaml 文件, 直接导入会去官方拉取images
  1. [fu@k8s-master ~]$ curl -O https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

编辑 yaml 文件,默认的 yaml 文件中对于 image 拉取策略的定义是 无论何时都会去拉取镜像
  1. [fu@k8s-master ~]$ vi kubernetes-dashboard.yaml
编辑 yaml 改一下 imagePullPolicy,把 Always 改成 IfNotPresent(本地没有再去拉取) 或者 Never(从不去拉取) 即可
  1. imagePullPolicy: Always
  2. 修改为:
  3. imagePullPolicy: IfNotPresent


 修改为:
 
创建:
  1. [fu@k8s-master ~]$ kubectl create -f ./kubernetes-dashboard.yaml


查看 NodePort ,既外网访问端口

  1. [fu@k8s-master ~]$ kubectl describe svc kubernetes-dashboard --namespace=kube-system
通过 describe 命令我们可以查看其暴露出的 NodePoint,然后便可访问:
 

浏览器中访问 dashboard,端口NodePort 

    192.168.44.129:32145

如打不开,可以查看一下pod状态,是否创建完成。
  1. [fu@k8s-master ~]$ kubectl get pod --namespace=kube-system
都Running后,效果如下:


如有遇到此问题,按下解决,我没遇到。
  1. FAQ:
  2. kube-discovery error
  3. failed to create "kube-discovery" deployment [deployments.extensions "kube-discovery" already exists]
  4. systemctl stop kubelet;
  5. docker rm -f -v $(docker ps -q);
  6. find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
  7. rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;
  8. systemctl start kubelet
  9. kubeadm init


推荐博客***:https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/

github上,kubernetes版本:https://github.com/kubernetes/kubernetes/releases

 

kubernetes 1.4.5集群部署的更多相关文章

  1. kubernetes集群部署

    鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ...

  2. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

  3. 基于Kubernetes集群部署skyDNS服务

    目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...

  4. 为Kubernetes集群部署本地镜像仓库

    目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...

  5. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  6. Kubernetes集群部署篇( 一)

    K8S集群部署有几种方式:kubeadm.minikube和二进制包.前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常 ...

  7. 利用ansible来做kubernetes 1.10.3集群高可用的一键部署

    请读者务必保持环境一致 安装过程中需要下载所需系统包,请务必使所有节点连上互联网. 本次安装的集群节点信息 实验环境:VMware的虚拟机 IP地址 主机名 CPU 内存 192.168.77.133 ...

  8. 二进制方式部署Kubernetes 1.6.0集群(开启TLS)

    本节内容: Kubernetes简介 环境信息 创建TLS加密通信的证书和密钥 下载和配置 kubectl(kubecontrol) 命令行工具 创建 kubeconfig 文件 创建高可用 etcd ...

  9. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ...

随机推荐

  1. ubuntu Chromium 安装 pepperflashplugin

    sudo apt-get update sudo apt-get install chromium-browser sudo apt-get install pepperflashplugin-non ...

  2. Spring 实现数据库读写分离

    随着互联网的大型网站系统访问量的增高,数据库访问压力方面不断的显现而出,所以许多公司在数据库层面采用读写分离技术,也就是一个master,多个slave.master负责数据的实时更新或实时查询,而s ...

  3. [函数] Firemonkey Windows 重新计算 Font Baseline

    计算字型 Baseline 是一个不常用的函数,但如果想要显示不同大小文字下方对齐,就得用它来计算字型的 Baseline 才行,如果计算不准,显示的文字就会高高低低不整齐. 在 Firemonkey ...

  4. 扩展JS Date对象时间格式化功能

    在自己JS代码中引入一下代码: Date.prototype.format =function(format) { var o = { "M+" : this.getMonth() ...

  5. 高效 Java Web 开发框架 JessMA v3.5.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  6. java接口调用——webservice就是一个RPC而已

    很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...

  7. CssStats – 分析和优化网站 CSS 代码的利器

    CssStats 是一个在线的 CSS 代码分析工具,你只需要输入网址或者直接 CSS 地址即可进行 CSS 代码的全方位分析,是前端开发人员和网页设计师分析网站 CSS 代码的利器,可以统计出 CS ...

  8. 深入理解DOM节点类型第二篇——文本节点Text

    × 目录 [1]特征 [2]空白 [3]属性[4]方法[5]性能 前面的话 文本节点顾名思义指向文本的节点,网页上看到的文字内容都属于文本节点.该节点简单直观,本文将详细介绍该部分内容 特征 文本节点 ...

  9. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  10. 【转】iOS UIApplication详解

    1.状态栏UIStateBar的设置是在UIApplication里面设置的,它包含4中风格 2. - (void)beginIgnoringInteractionEvents; (void)endI ...