Kubernetes 入门-学习-nginx安装-dashboard安装
一、入门
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
中的SecurityContextDeny
和ServiceAccount
去掉,这是权限相关的
(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的规则
五、参考资料
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安装的更多相关文章
- Kubernetes入门学习--在Ubuntu16.0.4安装配置Minikube
目 录 一. 安装minikube环境 1.1. 安装前准备 1.2. 安装Lantern 1.2.1. Lantern下载网站 1.2.2. Lantern下载地址 1.2.3. Lantern安装 ...
- Grunt入门学习之(1) -- 环境安装
Grunt入门学习(1) - 环境安装 这周根据项目需要,在项目的基础上分模块开发了一个小的项目板块,但是在规范组织每个模块的代码和其依赖性时比较麻烦,需要一个项目板块的构建工具.各个模块都包括其对应 ...
- 机器人操作系统ROS Indigo 入门学习(1)——安装ROS Indigo【转】
转自:http://blog.csdn.net/bobsweetie/article/details/43638761 Ubuntu14.04安装ROS Indigo 一.安装ROS 1.1配置Ubu ...
- Redis入门学习(一)——安装配置
最近马上要找实习了,听学长说他们公司里用了redis来解决缓存问题,在大三结束前来学习一下. 问:Redis是什么? 答:(官方)REmote DIctionary Server(Redis)是一个K ...
- MongoDB入门学习(一)—— 安装和启动
最近由于工作需要,开始学习MongoDB数据库了.第一篇博文就从这里开始吧,以此记录下学习中的点点滴滴,为自己加油呢! (一) MongoDB简介 网上搜搜了一下:(来源:http://www.run ...
- LINUX学习--nginx服务器的安装
一.安装环境 操作系统CentOS6.8 关闭SeLinux和iptables防火墙 二.网络yum源 将下面的软件下载到 /etc/yum.repos.d/ 的目录下 官方基础:http:// ...
- hadoop入门学习教程--DKHadoop完整安装步骤
使用hadoop版本是DKH标准三节点发行版,DKHadoop版本的易用性比较好,环境部署要简单的多,参考此篇安装前请先下载DKHadoop版本,网盘链接:https://pan.baidu.com/ ...
- MongoDB快速入门学习笔记1 windows安装MongoDB
1.安装MongoDB 从MongoDB官网上下载MongoDB,我下载的版本是64位的3.2.6.下载完以后直接安装,我的安装目录是D:\work\MongoDB. 2.配置MongoDB的环境变量 ...
- Altium Designer入门学习笔记1.软件安装与资料收集
一.软件安装 微信:http://url.cn/5Eudzt9 关注微信公众号"软件安装管家",点击"软件目录",弹出"软件目录",点击进入 ...
随机推荐
- Shell test命令/流程控制
Shell test命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数,说明 -eq等于则为真 -ne不等于则为真 -gt 大于则 ...
- AtCoder AGC002F Leftmost Ball (DP、组合计数)
题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_f 题解: 讲一下官方题解的做法: 就是求那个图(官方题解里的)的拓扑序个数,设\(dp[i ...
- StringBuffer的s1.capacity()是多少?
定义有StringBuffer s1=new StringBuffer(10);s1.append(“1234”)则s1.length()和s1.capacity()分别是多少? StringBuff ...
- Django基础之二(URL路由)
URL路由 简介 对于高质量的web应用来说,使用简洁,优雅的URL路由是一个值得尊重的细节,Django可以随心所欲的设计URL,不受框架的约束 为了给一个应用设计URL,你需要一个Python模块 ...
- CListCtrl死锁的问题
ON_COMMAND(ID_DELETE_1,OnDelete)在响应删除事件的时候 控件应该内部有锁,在这个时候调用GetItemCount()函数会阻塞
- jvm内存模型学习心得
昨天面试了两家,备受打击,问的多的就是jvm内存,然额真的是一头雾水.工作中用到的真是少之又少,面试还得问道, 今天恶补了下,在此作以下总结: jvm分为5部分 1.程序计数器 jvm支持多线程运行, ...
- Mac OS 10安装CocoaPods流程
一.简介 什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPod ...
- 使用ffmpeg来转换media Video
FFMPEG -i 1.wmv -c:v libx264 -strict -2 1_wmv.mp4 ffmpeg -i b.mp4 -codec copy -bsf h264_mp4toannexb ...
- 淘淘相关工具类【json,httpClient,id,FTP,exception,cookie(包括共享cookie的设置等)】
json package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.core.JsonP ...
- 送书福利| Python 完全自学手册
前言 这里不讨论「能不能学,要不要学,应不应该学 Python」的问题,这里只会告诉你怎么学. 首先需要强调的是,如果 Python 都学不会,那么我建议你考虑别的行业,因为 Python 之简单,令 ...