转自:https://blog.csdn.net/running_free/article/details/78388948

一、概述

1.简介

官方中文文档:https://www.kubernetes.org.cn/docs

  • Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
  • Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。

2.Kubernetes组成

  • Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。
  • 每个节点上都要运行Docker。Docker来负责所有具体的映像下载和容器运行。
  • Kubernetes主要由以下几个核心组件组成:

    • etcd保存了整个集群的状态;
    • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
    • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
    • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
    • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
    • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
    • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
  • 除了核心组件,还有一些推荐的Add-ons:

    • kube-dns负责为整个集群提供DNS服务
    • Ingress Controller为服务提供外网入口
    • Heapster提供资源监控
    • Dashboard提供GUI
    • Federation提供跨可用区的集群
    • Fluentd-elasticsearch提供集群日志采集、存储与查询

二、Kubernetes集群搭建

2.1实验环境

系统: redhat7.2 
server2:172.25.27.2 (k8s-master) 
server3:172.25.27.3 (k8s-node1) 
server3:172.25.27.4 (k8s-node2)

2.2 yum 源配置

[root@server2 ~]# vim /etc/yum.repos.d/docker.repo
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.3安装配置Kubernetes Master

[root@server2 ~]# yum -y install etcd kubernetes-master
[root@server2 ~]# vim /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" [root@server2 ~]# vim /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=172.25.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2.4启动etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服务,并设置开机启动

[root@server2 ~]# for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done
  • 1
  • 2

2.5在etcd中定义flannel网络

[root@server2 ~]# etcdctl mk /atomic.io/network/config '{"Network":"172.25.0.0/16"}'
  • 1

2.6安装配置Kubernetes Node

  • 使用yum安装flannel和kubernetes-node 
    yum 源同master
[root@server3 ~]# yum -y install flannel kubernetes-node
  • 1
  • 为flannel网络指定etcd服务,修改/etc/sysconfig/flanneld文件
[root@server3 ~]# vim /etc/sysconfig/flanneld
FLANNEL_ETCD="http://172.25.27.2:2379"
FLANNEL_ETCD_KEY="/atomic.io/network"
  • 1
  • 2
  • 3
  • 修改/etc/kubernetes/config文件
[root@server3 ~]# vim /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.25.27.2:8080"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 修改对应node的配置文件/etc/kubernetes/kubelet
[root@server3 ~]# vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=172.25.27.3" #修改成对应Node的IP
KUBELET_API_SERVER="--api-servers=http://172.25.27.2:8080" #指定Master节点的API Server
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 在所有Node节点上启动kube-proxy,kubelet,docker,flanneld等服务,并设置开机启动。
[root@server3 ~]# for SERVICES in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES; done
  • 1

2.7验证集群是否安装成功

在master上执行如下命令

[root@server2 ~]# kubectl get node
NAME LABELS STATUS AGE
172.25.27.3 kubernetes.io/hostname=172.25.27.3 Ready 14m
  • 1
  • 2
  • 3

可以添加多个节点,我只添加了一个 

k8s 环境搭建的更多相关文章

  1. Docker & k8s 系列二:本机k8s环境搭建

    本篇将会讲解k8s是什么?本机k8s环境搭建,部署一个pod并演示几个kubectl命令,k8s dashboard安装. k8s是什么 k8s是kubernetes的简写,它是一个全新的基于容器技术 ...

  2. k8s环境搭建

    mirantis 有个培训, 提供了安装脚本 git clone https://bitbucket.org/mirantis-training/kd100-scripts 网络采用的是calico ...

  3. k8s环境搭建--基于kubeadm方法

    环境 master node: 数量 1, 系统 ubuntu 16.04_amd64 worker node: 数量 1, 系统 ubuntu 16.04_amd64 kubernetes 版本: ...

  4. k8s环境搭建--基于minik8s方法

    minik8s 安装 关闭selinux.开启ipv6 sudo bash selinux_ipv6.sh 下载kubectl和minikube 下载minikube,因为国外的源被墙了,所以只能用阿 ...

  5. 记录一次k8s环境尝试过程(初始方案,现在已经做过很多完善,例如普罗米修斯)

    记录一次Team k8s环境搭建过程(初始方案,现在已经做过很多完善,例如普罗米修斯) span::selection, .CodeMirror-line > span > span::s ...

  6. ASP.NET Core on K8S学习初探(1)K8S单节点环境搭建

    当近期的一个App上线后,发现目前的docker实例(应用服务BFF+中台服务+工具服务)已经很多了,而我司目前没有专业的运维人员,发现运维的成本逐渐开始上来,所以容器编排也就需要提上议程.因此我决定 ...

  7. 部署k8s集群之环境搭建和etcd单节点安装

    环境搭建以及etcd 单节点安装过程 安装之前的环境搭建 在进行k8s安装之前先把虚拟机准备好,这里准备的是三台虚拟机 主机名 ip地址 角色 master 172.16.163.131 master ...

  8. Kubernetes入门,使用minikube 搭建本地k8s 环境

    这是一篇 K8S 的 HelloWorld,在学习K8S官方文档时搭建环境搭建的一个记录,照着文档下来还是比较顺利的. 一.安装kubectl 下载 kubectl curl -LO "ht ...

  9. 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

    前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...

随机推荐

  1. VUE2.0 饿了吗视频学习笔记(四):颜色、跳转、设置、vue-resource

    https://gitee.com/1981633/vue_study.git 源码下载地址,随笔记动态更新中 1.设置选中项颜色 <template> <div id=" ...

  2. 近几年杭电OJ大型比赛题目合集【更新到2017年11月初】

    2017年: 区域赛网络赛   6194~6205    6206~6216 区域赛网络赛   6217~6229 2016年: 区域赛网络赛  5868~5877    5878~5891    5 ...

  3. 第16月第9天 opengl glCltDispatchTable

    1.glCltDispatchTable typedef struct _GLTEBINFO { // glCltDispatchTable must be the first field for t ...

  4. pt-table-checksum检测不出主从差异处理

    几个月前写过pt-table-checksum 3.0.4检测不出主从差异数据,当时的解决方案是使用旧版本,另一个挫方法是自行设置binlog_format='STATEMENT'.现在已经发布到3. ...

  5. composer设计原理与基本用法

    原文地址:http://blog.turn.tw/?p=1039 COMPOSER進階原理:PHP命名空間與PSR-0   http://blog.turn.tw/?p=1122 Moving PHP ...

  6. Maven继承

    继承为了消除重复,可以把pom 中很多相同的配置提取出来:如:grouptId, version 等. 在使用的时候子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的 ...

  7. Windows下 Robhess SIFT源码配置

    Robhess OpenSIFT 源码下载:传送门 为了进一步学习SIFT,选择论文就着代码看,在VS2013.OpenCV2.4.13下新建项目,跑一跑经典之作.由于将代码和Opencv配置好后还会 ...

  8. kindle转换工具-calibre

    kindle转换工具  calibre https://calibre-ebook.com/download_windows

  9. javascript中的return、return true、return false、continue区别

    1.语法为:return 表达式; 2.w3c中的解释: 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  也就是:当代码执行到return语句时,函数返回一个结果就结束运行了,ret ...

  10. 03-Bootstrap学习

    一.Bootstrap的介绍 凡是使用过Bootstrap的开发者,都不在乎做这么两件事情:复制and粘贴.哈哈~,是的使用Bootstrap非常简单,但是在复制粘贴之前,需要先对Bootstrap的 ...