kubernetes 1.4.5集群部署
[fu@centos server]$ uname -a
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. 初始化环境
关闭防火墙:
- [root@k8s-master fu]# systemctl stop firewalld
- [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 
 
[root@k8s-master fu]# systemctl stop firewalld
[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 | 
[root@centos fu]# hostnamectl --static set-hostname k8s-master
[root@centos fu]# hostnamectl --static set-hostname k8s-node-1
[root@centos fu]# hostnamectl --static set-hostname k8s-node-2
1.3 配置 hosts
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 | 
192.168.44.129 k8s-master
192.168.44.131 k8s-node-1
192.168.44.132 k8s-node-2
echo '192.168.44.129 k8s-master
192.168.44.131 k8s-node-1
192.168.44.132 k8s-node-2' >> /etc/hosts
1.4安装kubelet 和kubeadm
添加yum (注:root用户下执行)
- cat <<EOF > /etc/yum.repos.d/k8s.repo
- [kubelet]
- name=kubelet
- baseurl=http://files.rm-rf.ca/rpms/kubelet/
- enabled=1
- gpgcheck=0
- EOF
安装并启动:
- yum install docker kubelet kubeadm kubectl kubernetes-cni
- systemctl enable docker && systemctl start docker
- systemctl enable kubelet && systemctl start kubelet
cat <<EOF > /etc/yum.repos.d/k8s.repo
[kubelet]
name=kubelet
baseurl=http://files.rm-rf.ca/rpms/kubelet/
enabled=1
gpgcheck=0
EOF
yum install docker kubelet kubeadm kubectl kubernetes-cni
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
2 部署 kubernetes master
2.1 添加yum(如环境统一处理,此处略过)
注:root用户下执行
- cat <<EOF> /etc/yum.repos.d/k8s.repo
- [kubelet]
- name=kubelet
- baseurl=http://files.rm-rf.ca/rpms/kubelet/
- enabled=1
- gpgcheck=0
- EOF
2.1 添加yum(如环境统一处理,此处略过)
cat <<EOF> /etc/yum.repos.d/k8s.repo
[kubelet]
name=kubelet
baseurl=http://files.rm-rf.ca/rpms/kubelet/
enabled=1
gpgcheck=0
EOF
安装 kubernetes依赖环境:
[root@k8s-master fu]# yum makecache
[root@k8s-master fu]# yum install -y socat kubelet kubeadm kubectl kubernetes-cni

 
2.2 安装docker
wget -qO- https://get.docker.com/ | sh
bash: wget: 未找到命令
[root@centos fu]# yum -y install wget
[root@centos fu]# docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
 
systemctl enable docker
systemctl start docker
2.3 下载镜像
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)
for imageName in ${images[@]} ; do
docker pull jicki/$imageName
docker tag jicki/$imageName gcr.io/google_containers/$imageName
docker rmi jicki/$imageName
done
2.4 启动 kubernetes
systemctl enable kubelet
systemctl start kubelet
2.5 创建集群
kubeadm init --api-advertise-addresses=192.168.44.129 --use-kubernetes-version v1.4.5
如提示:
Running pre-flight checks
preflight check errors:
/etc/kubernetes is not empty
[root@k8s-master kubernetes]# rm -rf manifests/
2.6 记录 token
Kubernetes master initialised successfully!
You can now join any number of machines by running the following on each node:
kubeadm join --token=a46536.cad65192491d2fd9 192.168.44.129
systemctl status kubelet
 
2.8 查询集群pods:
[root@k8s-master system]# kubectl get nodes
 
3 部署 kubernetes node
3.1 安装docker
wget -qO- https://get.docker.com/ | sh
bash: wget: 未找到命令
[root@centos fu]# yum -y install wget
systemctl enable docker
systemctl start docker
3.2 下载镜像
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)
for imageName in ${images[@]} ; do
docker pull jicki/$imageName
docker tag jicki/$imageName gcr.io/google_containers/$imageName
docker rmi jicki/$imageName
done
3.3 安装并启动 kubernetes(如环境统一处理,此处略过)
yum makecache
yum install -y socat kubelet kubeadm kubectl kubernetes-cni
systemctl enable kubelet
systemctl start kubelet
3.4 加入集群
- kubeadm join --token=a46536.cad65192491d2fd9 192.168.44.129
 
 
 
 
 
4 设置 kubernetes
- [fu@k8s-master ~]$ kubectl apply -f https://git.io/weave-kube
- daemonset "weave-net" created
[fu@k8s-master ~]$ kubectl apply -f https://git.io/weave-kube
daemonset "weave-net" created
4.2 查看系统服务状态
查看所有的namespaces中的pods
[fu@k8s-master ~]$ kubectl get pods --all-namespaces
 
将master中文件,/etc/kubernetes/admin.conf拷贝到其它node节点,可以下载再上传,也可以主机间拷贝
主机间拷贝:
[root@k8s-master fu]# scp admin.conf fu@192.168.44.131:/home/fu
[root@k8s-master fu]# scp admin.conf fu@192.168.44.132:/home/fu
 
node节点查询集群nodes状态命令:
[fu@k8s-node-2 ~]$ kubectl --kubeconfig ./admin.conf get nodes可以看到跟在master上运行效果一样:
想看一下admin.conf是啥,可以more或cat,more按空格分页
- [root@k8s-master fu]# more admin.conf
4.4 配置dashboard
#在master节点下载 yaml 文件, 直接导入会去官方拉取images
- [fu@k8s-master ~]$ curl -O https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml

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

查看 NodePort ,既外网访问端口
- [fu@k8s-master ~]$ kubectl describe svc kubernetes-dashboard --namespace=kube-system
通过 describe 命令我们可以查看其暴露出的 NodePoint,然后便可访问:
 
 
浏览器中访问 dashboard,端口NodePort 
    192.168.44.129:32145
如打不开,可以查看一下pod状态,是否创建完成。
[fu@k8s-master ~]$ kubectl get pod --namespace=kube-system都Running后,效果如下:
如有遇到此问题,按下解决,我没遇到。
FAQ:
kube-discovery error
failed to create "kube-discovery" deployment [deployments.extensions "kube-discovery" already exists]
systemctl stop kubelet;
docker rm -f -v $(docker ps -q);
find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;
systemctl start kubelet
kubeadm init
github上,kubernetes版本:https://github.com/kubernetes/kubernetes/releases
 
kubernetes 1.4.5集群部署的更多相关文章
- kubernetes集群部署
		鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,c ... 
- Kubernetes集群部署关键知识总结
		Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ... 
- 基于Kubernetes集群部署skyDNS服务
		目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ... 
- 为Kubernetes集群部署本地镜像仓库
		目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ... 
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
		0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ... 
- Kubernetes集群部署篇( 一)
		K8S集群部署有几种方式:kubeadm.minikube和二进制包.前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常 ... 
- 利用ansible来做kubernetes 1.10.3集群高可用的一键部署
		请读者务必保持环境一致 安装过程中需要下载所需系统包,请务必使所有节点连上互联网. 本次安装的集群节点信息 实验环境:VMware的虚拟机 IP地址 主机名 CPU 内存 192.168.77.133 ... 
- 二进制方式部署Kubernetes 1.6.0集群(开启TLS)
		本节内容: Kubernetes简介 环境信息 创建TLS加密通信的证书和密钥 下载和配置 kubectl(kubecontrol) 命令行工具 创建 kubeconfig 文件 创建高可用 etcd ... 
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之集群部署环境规划(一)
		0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.环境规划 软件 版本 ... 
随机推荐
- iOS 编辑UITableView(根据iOS编程编写)
			上个项目我们完成了 JXHomepwner 简单的应用展示,项目地址.本节我们需要在上节项目基础上,增加一些响应用户操作.包括添加,删除和移动表格. 编辑模式 UITableView 有一个名为 e ... 
- Winform简单调用WebApi
			WebAPI Controllers public class SimuController : ApiController { //EF 5 BIM_GENERALDICTONARY_DBEnti ... 
- 【原创】C#模拟Post请求,正文为json数据的代码参考
			由于之前一直在做键值对post数据的提交,没遇到过json正文的提交,遇到的问题截图: 对于此种情况的post,我用 谷歌插件 PostMan 模拟试了下成功了,截图如下: Postman插件在你选择 ... 
- Hive学习笔记(一)
			摘要: Hive 是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据的机制.H ... 
- angular的$filter服务
			首先,介绍下$filter服务: 1.$filter是用来进行数据格式化的专用服务: 2.AngularJS内置了currency.date.filter.json.limitTo.lowercase ... 
- 数据结构:优先队列 基于堆实现(python版)
			#!/usr/bin/env python # -*- coding:utf-8 -*- ''' Author: Minion-Xu ''' #异常类 class HeapPriQueueError( ... 
- extend
			这段时间在写一个预览图片的插件, 被我老大说了无数次了,不多说啥,说多了都是泪 昨天看着我的代码他说你用了extend,那你知道是什么意思吗 我只知道是扩展的意思,瞬间觉得自己弱爆了 真的 然后今天看 ... 
- SharePoint 2013 Designer 入门教程
			SharePoint的使用中,SharePoint Designer是非常重要的工具,我们可以通过Designer设计页面.母版页,维护.管理站点,也可以定制列表表单.数据视图,设计工作流等等.下面总 ... 
- CALayer的m34 - 三维透视效果
			CATransform3D transform = CATransform3DIdentity; // 修改transform的m34达到透视效果 // - 1.0 / (500 ~ 1000 效果最 ... 
- ReactNative中iOS和Android的style分开设置教程
			reactnative可以编辑iOS程序也可以编辑Android程序, 而且80%的代码都可以重用. 及有些文件是两个系统通用的, 相信大家也都清楚了. 但是也许大家会遇到一些屏幕布局的问题, 最常遇 ... 
