关于什么是Kubernetes请看另一篇内容:http://www.cnblogs.com/boshen-hzb/p/6482734.html

一、环境搭建

master安装的组件有:

  • docker

  • etcd       可以理解为是k8s的数据库,存储所有节点、pods、网络信息

  • kube-proxy    提供service服务的基础组件

  • kubelet    管理k8s节点的组件,因为这台master同时也是nodes,所以也要安装

  • kube-apiserver   k8s提供API的接口,是整个k8s的核心

  • kube-controller-manager 管理分配资源的组件

  • kube-scheduler    调度资源的组件

  • flanneld     整个k8s的网络组件

nodes安装的组件有:

  • docker

  • kube-proxy

  • kubelet

  • flanneld

由于是单机安装,所以只需要安装master节点就可以。

二、安装步骤

1、关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

2、更新yum源

cat <<EOF> /etc/yum.repos.d/virt7-docker-common-release.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
EOF

3、执行yum -y update

4、执行安装命令

yum install -y etcd kubernetes flannel

如果系统已经存在安装好的docker引擎,上面的命令会报错,解决方法就是:先删除掉docker,因为上面的命令当中,会自动安装docker

5、配置etcd服务器

/etc/etcd/etcd.conf

# [member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://10.111.131.51:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.111.131.51:2379"
启动服务
systemctl start etcd
systemctl enable etcd
检查etcd cluster状态

[root@localhost ~]# etcdctl cluster-health
  member eb1f405cbdb8358 is healthy: got healthy result from http://localhost:2379
  cluster is healthy
  [root@localhost ~]#



检查etcd集群成员列表,这里只有一台

[root@localhost ~]# etcdctl member list
  eb1f405cbdb8358: name=default peerURLs=http://10.111.131.51:2380 clientURLs=http://localhost:2379 isLeader=true
  [root@localhost ~]

配置防火墙
firewall-cmd --zone=public --add-port=2379/tcp --permanent
firewall-cmd --zone=public --add-port=2380/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

6、配置master服务器

1) 配置kube-apiserver配置文件

/etc/kubernetes/config

KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0" # Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://10.111.131.51:8080"

/etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"

# The port on the local server to listen on.
# KUBE_API_PORT="--port=8080" # Port minions listen on
# KUBELET_PORT="--kubelet-port=10250" # Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://10.111.131.51:2379" # Address range to use for services
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" # default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" # Add your own!
KUBE_API_ARGS=""

2) 配置kube-controller-manager配置文件

# The following values are used to configure the kubernetes controller-manager

# defaults from config and apiserver should be adequate

# Add your own!
KUBE_CONTROLLER_MANAGER_ARGS=""

3) 配置kube-scheduler配置文件
 /etc/kubernetes/scheduler

###
# kubernetes scheduler config # default config should be adequate # Add your own!
KUBE_SCHEDULER_ARGS="--address=0.0.0.0"

4) 启动服务

service kube-apiserver restart

service kube-controller-manager restart

service kube-scheduler restart

以下是将本机当作node节点的配置

5)配置etcd

[root@localhost ~]# etcdctl set /k8s/network/config '{"Network": "10.111.131.0/24"}'
{"Network": "10.111.131.0/24"}
[root@localhost ~]#

6)配置node的network,本实例采用flannel方式来配置,如需其他方式,请参考Kubernetes官网。

先用ifconfig查找到本机网络10.111.131.51对应的网卡:

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 10.111.131.51 netmask 255.255.255.0 broadcast 10.111.131.255
inet6 fe80::20c:29ff:fedf:f83b prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:df:f8:3b txqueuelen 1000 (Ethernet)
RX packets 161627 bytes 208913594 (199.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 113194 bytes 72446146 (69.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

打开/etc/sysconfig/flanneld,进行以下配置

# Flanneld configuration options  

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

7)配置node的kube-proxy

/etc/kubernetes/config (注意:本机是master也是node,因为前面已经配过,所以这里不用再配)

KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0" # Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver
KUBE_MASTER="--master=http://10.111.131.51:8080"

/etc/kubernetes/proxy

进行以下配置

 config should be adequate

# Add your own!
KUBE_PROXY_ARGS="--bind=address=0.0.0.0"

8) 配置node的kubelet

在/etc/hosts下加入:10.111.131.51 k8s-master

/etc/kubernetes/kubelet

###
# kubernetes kubelet (minion) config # The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=127.0.0.1" # The port for the info server to serve on
# KUBELET_PORT="--port=10250" # You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname-override=k8s-master" # location of the api-server
KUBELET_API_SERVER="--api-servers=http://10.111.131.51:8080" # pod infrastructure container
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" # Add your own!
KUBELET_ARGS=""

9) 启动node服务

service flanneld start

service kube-proxy start

service kubelet start

10)至此,整个Kubernetes单机版环境搭建完,下面创建一个deployment进行测试

mysql-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql-test
spec: replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: mysql-test
image: 72.16.101.192/common/mysql:5.6
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 3306

在机器上执行以下命令:

[root@localhost ~]#  kubectl create -f mysql-deployment.yaml
deployment "mysql-test" created
[root@localhost ~]#

查看刚才创建的deployment信息。

[root@localhost ~]# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql-test 1 0 0 0 1m
[root@localhost ~]#

出现上面的信息,表示Kubernetes安装成功。

cenots7单机安装Kubernetes的更多相关文章

  1. linux(centos8):kubeadm单机安装kubernetes(kubernetes 1.18.3)

    一,kubernetes安装的准备工作: 1,准备工作的各步骤请参见: https://www.cnblogs.com/architectforest/p/13141743.html   2,  ma ...

  2. kubernetes入门(10)kubernetes单机安装后 - helloworld

    前言 查看端口是否被监听了 ::netstat -tlp |grep 31002 我是用的yum install etcd kubernetes docker vim, 这样装的是1.5.2,不是最新 ...

  3. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  4. Minikube之Win10单机部署Kubernetes(k8s)自动化容器操作的开源平台

    Minikube之Win10单机部署 Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作.如果你曾经用过Docker部署容器,那么可以 ...

  5. 使用 Minikube 安装 Kubernetes

    概述: 单机低配置主机也可以玩转kubernetes集群.该文章是将介绍使用Minikube安装Kubernetes集群(一般用于本地/开发环境). 配置环境: 硬件:CPU 至少2个核心,至少2.5 ...

  6. kind:Kubernetes in Docker,单机测试 Kubernetes 群集的最佳方案

    请访问原文发布链接:https://sysin.org/article/kind/,查看最新版. 作者:gc(at)sysin.org,主页:www.sysin.org 2021.04.28 更新,k ...

  7. (原) 1.1 Zookeeper单机安装

    本文为原创文章,转载请注明出处,谢谢 zookeeper 单机安装配置 1.安装前准备 linux系统(此文环境为Centos6.5) Zookeeper安装包,官网https://zookeeper ...

  8. Linux下Kafka单机安装配置方法(图文)

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  9. Ubuntu 下 Neo4j单机安装和集群环境安装

    1. Neo4j简介 Neo4j是一个用Java实现的.高性能的.NoSQL图形数据库.Neo4j 使用图(graph)相关的概念来描述数据模型,通过图中的节点和节点的关系来建模.Neo4j完全兼容A ...

随机推荐

  1. 模块初识2-模块的默认保存路径Python36-32\\lib\\site-packages,Python36-32\,标准库和第三方库

    import 可以直接导入当前目录的其他脚本 如果你把login.py移动到new_dir的目录下,那么就会提示找不到模块: 要解决这个问题,有两个方法: 1.把login.py复制到C:\\User ...

  2. (转) C#中Timer使用及解决重入(多线程同时调用callback函数)问题

    原文链接: http://www.cnblogs.com/hdkn235/archive/2014/12/27/4187925.html

  3. Linux学习笔记 -- stdin/stdout 重定向

    输入/输出重定向 Linux系统通常从一个叫标准输入的地方读取输入并且将一个命令的结果以写入到标准输出反馈给我们:默认情况下,这也是我们使用的终端(命令行).如果我们想改变输入和输出的方式,就需要使用 ...

  4. canvas之绘制一张图片

    <canvas id="canvas" width="600" height="500" style="background ...

  5. 【UVA】1596 Bug Hunt(模拟)

    题目 题目     分析 算是个模拟吧     代码 #include <bits/stdc++.h> using namespace std; map<int,int> a[ ...

  6. 强大的NCBI接口

    刚才小玩了下,不错,.net确实很方便,很强大 Using Entrez Utilities Web Service with C# and MS Visual Studio 2005 Updated ...

  7. Python - Pyinstaller

    安装 Pyinstaller pip install pyinstaller 使用: test.py print("Hello World!") 命令行输入 pyinstaller ...

  8. SpringBoot起步依赖和自动配置

    一.起步依赖 1. 是什么 本质上是一个Maven项目对象模型(Project Object Model, POM), 定义了对其他库的传递依赖,这些东西加在一起即支持某项功能. 比如: spring ...

  9. c++获取lua嵌套table某属性的值

    开发环境:vs2012 lua版本:LuaJIT-2.0.2 lua文件作为配置文件,c++读取这个配置. lua配置结构如下 SceneConfig = { [] = { name =}, [] = ...

  10. linux进程通信:消息队列

    消息队列可以实现两个没有关系的进程之间的通信. 创建了一个消息队列后,进程可以往里面放消息,也可以取消息.因为这个消息队列是有名字的,所以就算是两个没有关系的进程,也能通信. 而且人性化的一点是,可以 ...