一、入门

1、Kubernetes中文社区---http://docs.kubernetes.org.cn/

2、Kubernetes集群组件:
  - etcd 一个高可用的K/V键值对存储和服务发现系统
  - flannel 实现夸主机的容器网络的通信
  - kube-apiserver 提供kubernetes集群的API调用
  - kube-controller-manager 确保集群服务
  - kube-scheduler 调度容器,分配到Node
  - kubelet 在Node节点上按照配置文件中定义的容器规格启动容器
  - kube-proxy 提供网络代理服务

3、集群示意图

二、安装

1、先决条件

如下操作在所有机器执行

(1).确保系统已经安装epel-release源

# yum -y install epel-release

(2).关闭防火墙服务,避免与docker容器的防火墙规则冲突。

# systemctl stop firewalld
# systemctl disable firewalld

(3).centos最好是centos7系统以上,不然软件源中没有k8s的安装包

(4).关闭selinux

#临时关闭selinux 
setenforce 0 
#永久关闭selinux 
vi /etc/selinux/config 
##修改enforcing为disabled 

2.安装配置Kubernetes Master

如下操作在master上执行
(1).使用yum安装etcd和kubernetes-master

# yum -y install etcd kubernetes-master

(2).编辑/etc/etcd/etcd.conf文件

ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"

(3).编辑/etc/kubernetes/apiserver文件

 
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
 

PS:测试时需要把KUBE_ADMISSION_CONTROL中的SecurityContextDenyServiceAccount去掉,这是权限相关的

(4).启动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

(5).在etcd中定义flannel网络

# etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

PS:其中网络号172.17.0.0/16与docker中的docker0网络一致(若不一致,可修改docker0网络或者配置上述etcd网络);atomic.io与下面的Flannel配置中的FLANNEL_ETCD_PREFIX对应

3.安装配置Kubernetes Node

如下操作在node1、node2、node3、node4等节点上操作
(1).使用yum安装flannel和kubernetes-node

# yum -y install flannel kubernetes-node

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

FLANNEL_ETCD="http://192.168.30.20:2379"
FLANNEL_ETCD_KEY="/atomic.io/network"

(3).修改/etc/kubernetes/config文件

KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.30.20:8080"

(4).按照如下内容修改对应node的配置文件/etc/kubernetes/kubelet

node1配置如下

 
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=192.168.30.21" #修改成对应Node的IP
KUBELET_API_SERVER="--api-servers=http://192.168.30.20:8080" #指定Master节点的API Server
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""

(5).其他的节点按照node1节点来操作

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

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

4.验证集群是否安装成功及相关命令

(1)验证是否成功

[root@master ~]# kubectl get node
NAME STATUS AGE
192.168.30.21 Ready 1m
192.168.30.22 Ready 1m
192.168.30.23 Ready 1m
192.168.30.24 Ready 1m

注释:上述4个节点正常显示,状态为Ready,则说明集群搭建成功,

(2)相关命令

#创建
kubectl create -f kubernetes-dashboard.yaml --vaildate #创建应用并验证 #查看
kubectl get node
kubectl get pods --all-namespaces #查看所有pod
# 查看pods所在的运行节点
kubectl get pods -o wide
# 查看Replication Controller信息
kubectl get rc
# 查看service的信息
kubectl get svc
kubectl logs pod pod名
kubectl get deployments # 删除
kubectl delete -f 文件名
kubectl delete pod pod名
kubectl delete rc rc名
kubectl delete service service名
kubectl delete pod --all #描述
显示Node的详细信息
kubectl describe nodes <node-name>
显示Pod的详细信息
kubectl describe pods/<pod-name>
显示由RC管理的Pod的信息
kubectl describe pods <rc-name>

三、安装nginx与dashboard应用

1、安装nginx

(1)在node节点上下载好nginx镜像,创建pod : nginx-pod.yaml

kubectl create -f nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort:

(2)创建replicationController : nginx-rc.yaml

kubectl create -f nginx-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-rc
spec:
replicas:
selector:
name: nginx-pod
template:
metadata:
labels:
name: nginx-pod
spec:
containers:
- name: nginx-pod
image: nginx
ports:
- containerPort:
kubectl get rc 

(3)创建service : nginx-service.yaml

kubectl create -f nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
ports:
- port:
nodePort:
selector:
name: nginx-pod
kubectl  get svc    #查看服务

(4)使用其他机器的浏览器访问node1机器的30001端口

2、安装dashboard

(1).在master和nodes上都需要安装flannel

yum install flannel

vi /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379" # etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network" # Any additional options that you want to pass
#FLANNEL_OPTIONS=""

(2)在master 配置kubernetes-dashboard.yaml文件,修改一下即可;

cat >kubernetes-dashboard.yaml<<-EOF
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas:
selector:
matchLabels:
app: kubernetes-dashboard
template:
metadata:
labels:
app: kubernetes-dashboard
# Comment the following annotation if Dashboard must not be deployed on master
annotations:
scheduler.alpha.kubernetes.io/tolerations: |
[
{
"key": "dedicated",
"operator": "Equal",
"value": "master",
"effect": "NoSchedule"
}
]
spec:
containers:
- name: kubernetes-dashboard
image: bestwu/kubernetes-dashboard-amd64:v1.6.3 #可用或者找个可用的镜像
imagePullPolicy: Always
ports:
- containerPort:
protocol: TCP
args:
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
- --apiserver-host=http://10.0.10.10:8080 #注意这里是api的地址
livenessProbe:
httpGet:
path: /
port:
initialDelaySeconds:
timeoutSeconds:
---
kind: Service
apiVersion: v1
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port:
targetPort:
selector:
app: kubernetes-dashboard EOF

(3).在node节点上下载镜像

docker pull bestwu/kubernetes-dashboard-amd64:v1.6.3
docker images #查看镜像

(4)创建实例

[root@k8s ~]# kubectl create -f kubernetes-dashboard.yaml 

查看是否成功运行:

[root@k8s ~]# kubectl get pods --all-namespaces  

NAMESPACE     NAME                                    READY     STATUS    RESTARTS   AGE 

default       nginx-controller-6n19x                  /       Running             9m 

kube-system   kubernetes-dashboard--0qzdv   /       Running             12m 

四、安装的坑

1 安装前一定要关闭firewalld服务,否则需要配firewalld的规则

 2 docker启动之后会产生一个网卡,这个网卡的地址默认是172.17.0.0 网段,这是个虚拟网络,如果要是想让集群中的其他机器访问容器需要通过安装flannel来实现。所以安装完flannel和docker一定要确定一下网段和etcd中储存的是否一致,如果不一致重启docker服务
确保你的
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.41.1 netmask 255.255.255.0 broadcast 0.0.0.0
ether 02:42:91:89:15:19 txqueuelen 0 (Ethernet)
和你安装完etcd设置的数据一致
etcdctl mk /coreos.com/network/config '{"Network": "192.168.0.0/16"}'
 3 请不用用容器安装linux然后再容器中安装docker这样会会有很多问题用虚拟机可以,反正我是没有成功在docker中安装linux再安装kubernetes。
 4最少要用mini版本进行安装kubernetes需要依赖很多系统服务,需要centos7以上版本最好7.2以上
 5 记得在拉取镜像的时候一定要加上版本号,一开始不知道在阿里的镜像库上总是拉不到镜像
 6 KUBE_CONTROLLER_MANAGER_ARGS配置中默认是需要认证,的记得去掉SecurityContextDeny,ServiceAccount。
 7安装中出了问题要看日志journalctl -n 10 ,运行中的日志查看/var/log/messages,docker的日志使用docker logs -f 容器id
 8kubernetes-dashboard安装 其实不需要翻墙只有修改ymal文件中的镜像路径就可以了,阿里有很多的镜像

五、参考资料

1、http://blog.csdn.net/u013760355/article/details/68061976-----nginx安装

2、https://www.58jb.com/html/152.html----dashboard安装

3、http://blog.csdn.net/magerguo/article/details/72123259?locationNum=3&fps=1 ------k8s安装

Kubernetes 入门-学习-nginx安装-dashboard安装的更多相关文章

  1. Kubernetes入门学习--在Ubuntu16.0.4安装配置Minikube

    目 录 一. 安装minikube环境 1.1. 安装前准备 1.2. 安装Lantern 1.2.1. Lantern下载网站 1.2.2. Lantern下载地址 1.2.3. Lantern安装 ...

  2. Grunt入门学习之(1) -- 环境安装

    Grunt入门学习(1) - 环境安装 这周根据项目需要,在项目的基础上分模块开发了一个小的项目板块,但是在规范组织每个模块的代码和其依赖性时比较麻烦,需要一个项目板块的构建工具.各个模块都包括其对应 ...

  3. 机器人操作系统ROS Indigo 入门学习(1)——安装ROS Indigo【转】

    转自:http://blog.csdn.net/bobsweetie/article/details/43638761 Ubuntu14.04安装ROS Indigo 一.安装ROS 1.1配置Ubu ...

  4. Redis入门学习(一)——安装配置

    最近马上要找实习了,听学长说他们公司里用了redis来解决缓存问题,在大三结束前来学习一下. 问:Redis是什么? 答:(官方)REmote DIctionary Server(Redis)是一个K ...

  5. MongoDB入门学习(一)—— 安装和启动

    最近由于工作需要,开始学习MongoDB数据库了.第一篇博文就从这里开始吧,以此记录下学习中的点点滴滴,为自己加油呢! (一) MongoDB简介 网上搜搜了一下:(来源:http://www.run ...

  6. LINUX学习--nginx服务器的安装

    一.安装环境 操作系统CentOS6.8 关闭SeLinux和iptables防火墙 二.网络yum源 将下面的软件下载到  /etc/yum.repos.d/   的目录下 官方基础:http:// ...

  7. hadoop入门学习教程--DKHadoop完整安装步骤

    使用hadoop版本是DKH标准三节点发行版,DKHadoop版本的易用性比较好,环境部署要简单的多,参考此篇安装前请先下载DKHadoop版本,网盘链接:https://pan.baidu.com/ ...

  8. MongoDB快速入门学习笔记1 windows安装MongoDB

    1.安装MongoDB 从MongoDB官网上下载MongoDB,我下载的版本是64位的3.2.6.下载完以后直接安装,我的安装目录是D:\work\MongoDB. 2.配置MongoDB的环境变量 ...

  9. Altium Designer入门学习笔记1.软件安装与资料收集

    一.软件安装 微信:http://url.cn/5Eudzt9 关注微信公众号"软件安装管家",点击"软件目录",弹出"软件目录",点击进入 ...

随机推荐

  1. Web Api试图加载格式不正确的程序,解决方法

    Web Api试图加载格式不正确的程序,错误如下: 问题原因: 出现上述问题的原因是,所加载的程序集中有32位的,也有64位的,IIS 7 程序池 在Windows下.Net FrameWork是64 ...

  2. python中加入中文注释报错处理

    python中加入中文注释,运行报错如下 解决方法: 在py文件的第一行加入   #coding:utf-8  即可

  3. 为什么电脑连接不上FTP

    我们对服务器的FTP状况有实时监控,一般问题都不在服务器端. 而且我们客服一般会第一时间测试下您空间FTP是否真的不能连接 99%绝大部分FTP连接不上的问题,都是客户那边的软件端或网络问题. 问题分 ...

  4. legend2---数据字段没有默认值错误:SQLSTATE[HY000]: General error: 1364 Field 'h_21_injury_limit' doesn't have a default value

    legend2---数据字段没有默认值错误:SQLSTATE[HY000]: General error: 1364 Field 'h_21_injury_limit' doesn't have a ...

  5. 微信小程序 视频 组件

    video 组件 视频组件 相关的api :wx.createVideoContext 支持的格式: 支持的编码格式 video 组件的属性: src:类型 字符串 必填 要播放视频的资源地址 (支持 ...

  6. java 8 jdk1.8 新特性

    1Lambda表达式 2函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. java 8为函数式接口引入了一个新注解@Fu ...

  7. eclipse有时候导入了包,但是还是有红线,找不到

    clean一下工程,选择project->clean->clean project selected blow并且选择build only the selected project

  8. windows安装程序制作

    作为一个学计算机的,现在才知道那些安装软件都是用软件封装工具封装起来的. 我们写好exe以后可以下载一个Inno setup5 对其打包成可安装的软件,期间可加入图标,readme,等等一些东西.

  9. hdu6599 I Love Palindrome String

    由样例可知,题目中求的回文串数量,其实是本质不同的回文串数量,这个可以直接用回文树来做. 考虑前半段是回文串这个限制,这个东西回文树不好做,可以再套一个马拉车,然后记录一下插入到回文树的节点中最后一个 ...

  10. DedeCMS系统设置说明:站点设置

    DedeCMS系统设置说明:站点设置 http://www.ithov.com/master/114583.shtml DedeCMS系统设置说明:站点设置 2012-03-28 15:31来源:风信 ...