Centos7手工安装Kubernetes集群
安装Kubernetes集群有多种方式,前面介绍了Kubeadm的方式,本文将介绍手工安装的方法。
安装环境有3台Azure上的VM:
Hkube01:10.0.1.4
Hkube02:10.0.1.5
Hbube03:10.0.1.6
其中hkube01是Master节点,将会安装docker, etcd, Kubernetes master, flannel所需要的组件;
Hkube02和hkube03是worker节点,将会安装docker, kubernetes node, flannel所需要的组件。
安装过程如下:
一 master节点
1 安装软件
yum install -y docker etcd kubernetes-master
2 配置启动docker
由于docker-hub的站点在国外,下载会非常慢,把docker下载指向国内的镜像站点:
vim /etc/docker/daemon.json
{"registry-mirrors": ["registry.docker-cn.com"]}
systemctl enable docker
systemctl start docker
3 配置启动etcd
Etcd和zookeeper类似,是存储key/value的工具。
cd /etc/etcd
vim etcd.conf ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="master"
ETCD_ADVERTISE_CLIENT_URLS=http://10.0.1.4:2379 systemctl enable etcd
systemctl start etcd
4 配置kubernetes
在/etc/kubernetes目录中,有4个配置文件:
需要配置apiserver和config两个配置文件。Controller-manager和scheduler不需要配置。
配置apiserver,需要指定etcd地址、api-server的端口、提供服务的地址和cluster的ip范围:
vim /etc/kubernetes/apiserver KUBE_API_PORT="--port=8080"
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.1.4:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.0.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
本文不设计Kubernetes的安全问题,所以在api-server的配置中的admission_control中去掉了和安全相关的内容SecurityContextDeny,ServiceAccount。
配置config,需要指定kubernetes master的地址和端口:
vim /etc/kubernetes/config KUBE_MASTER="--master=http://10.0.1.4:8080"
5 启动服务
systemctl enable kube-apiserver kube-controller-manager kube-scheduler
systemctl start kube-apiserver kube-controller-manager kube-scheduler
systemctl status kube-apiserver kube-controller-manager kube-scheduler
二 node节点
1 安装软件
yum install -y docker kubernetes-node
2 配置启动docker
和master节点相同:
vim /etc/docker/daemon.json
{"registry-mirrors": ["registry.docker-cn.com"]}
systemctl enable docker
systemctl start docker
3 配置kubelet
在/etc/kubernetes下有3个配置文件:
需要配置config和kubelet两个配置文件,proxy是kube-proxy的配置文件,保留默认就可以。
配置config,需要指定kubernetes master的地址和端口:
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://10.0.1.4:8080"
配置kubelet,指定其工作地址、本机注册到master时的名称、master的地址和端口:
vim /etc/kubernetes/kubelet KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=hkube02"
KUBELET_API_SERVER="--api-servers=http://10.0.1.4:8080"
另外由于centos的yum源指定的pod-infrastructure的docker镜像需要redhat的证书,会导致安装不成功。为避免这个问题,我们把kubelet中的这个镜像更改成docker-hub中的镜像。
先搜索一下:
docker search pod-infrastructure
选择一个更改,我选择了最后一个:
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image= docker.io/zengshaoyong/pod-infrastructure:latest "
4 启动服务
systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy
systemctl status kubelet kube-proxy
5 检查
在master节点上查看:
已经看到hkube02和hkube03都注册上来了。
创建一个deployment:
kubectl run nginx --image=nginx
kubectl scale deployment nginx --replicas=
但网络层面pod只能和本node的其他pod连通。
三 网络
本文将安装flannel,实现跨节点的容器互通。
1 安装
yum install -y flannel
2 配置
在master节点进行Etcd的配置:
etcdctl set /coreos.com/network/config '{"Network":"192.168.0.0/16"}'
在所有node节点上配置flannel配置文件:
vim /etc/sysconfig/flanneld
systemctl enable flanneld
systemctl start flanneld
systemctl restart docker
开启转发:
iptables -P FORWARD ACCEPT
此时可以看到docker0的地址和flannel的端口地址网段相同:
3 验证
部署pod nginx:
kubectl run nginx --image nginx
kubectl scale deployment nginx --replicas=
登录到hkube03,进入到容器:
通过部署flannel,可以实现各个pod间的网络互通。
总结:
在Centos7上,通过yum安装Kubernetes的各个组件,实现Kubernetes的集群部署。
Centos7手工安装Kubernetes集群的更多相关文章
- [Kubernetes]CentOS7部署Kubernetes集群
环境介绍及安装前准备 三台机器,用于部署k8s的运行环境: 节点 ip Master 192.168.243.138 Node1 192.168.243.139 Node2 192.168.243.1 ...
- Centos7部署Kubernetes集群
目录贴:Kubernetes学习系列 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作系统采用Centos7.3 64位,细节如下. [root@localhost ~]# uname -a ...
- Centos7部署Kubernetes集群(单工作节点)+配置dashboard可视化UI
目标:docker+kubernetes+cadvosor+dashboard 一:物理硬件 两台虚拟机(centos7):一台做为主节点(master),一台做为工作节点(node) [root@M ...
- 基于 CentOS7 的 Kubernetes 集群
一.环境 相关主机 master 192.168.12.197 minion 192.168.12.198~232 etcd 192.168.12.233~236 相关软件 OS CentOS 7 软 ...
- Centos7部署kubernetes集群CA证书创建和分发(二)
1.解压软件包 [root@linux-node1 ~]# cd /usr/local/src/ [root@linux-node1 src]# ls k8s-v1.10.1-manual.zip [ ...
- 基于Kubernetes集群部署skyDNS服务
目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...
- 基于kubernetes集群部署DashBoard
目录贴:Kubernetes学习系列 在之前一篇文章:Centos7部署Kubernetes集群,中已经搭建了基本的K8s集群,本文将在此基础之上继续搭建K8s DashBoard. 1.yaml文件 ...
- 为Kubernetes集群部署本地镜像仓库
目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...
- Centos7上安装Kubernetes集群部署docker
一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ...
随机推荐
- 深入理解Java虚拟机(1)--Java内存区域
运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用 ...
- python 低版本一段扫描代码
个人在做Linux渗透测试往内网跨的时候,通常我碰到的Linux环境都会是如下集中情况 1: DMZ,严格的DMZ,根本跨不到内网里去.这种最恶心了. 2:WEB SERVER,严格区分,工作机和工作 ...
- tyvj 1062 合并傻子 区间dp,典型模型石子归并
P1062 合并傻子 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 从前有一堆傻子,钟某人要合并他们~但是,合并傻子是要掉RP的...... 描述 在一个园 ...
- combox datagrid重复请求问题
html代码中利用class声明了datagrid,导致easyUI解析class代码的时候先解析class声明中的datagrid,这样组件就请求了一次url:然后又调用js初始化代码请求一次url ...
- vue-cli 一分钟搭建自己的vue项目
创建项目 1.安装全局vue-cli npm install vue-cli -g 2.生成项目模板(my_projuct为项目名称) vue init webpack my_projuct 3.进入 ...
- 抓jsoup_01_方案代码
1.方案选择: 1.1.HttpClient库 获取 原始的 json数据 1.2.JSON库 取得 我们需要的HTML内容 1.3.使用 jsoup 解析 我们取得的HTML内容 2.不直接使用 j ...
- power shell添加vim
1.去Vim官网下载适合操作系统的可执行文件 地址:https://www.vim.org/download.php#pc 2.找到Vim文件夹中的vimrc文件进行修改,增加下面这4行. set e ...
- Java堆、栈和常量池以及相关String的详细讲解(转)
一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...
- 网站 安全 ---- 常见的 web 攻击
网站 安全 ---- 常见的 web 攻击 1 sql 注入(常用的攻击性)(django的orm是做过sql防护处理的) 危害: 非法读取,篡改,删除数据库中的数据 盗取用户的各类敏感信息.获取利益 ...
- OpenCV - 图片二值化,计算白色像素点的个数
直接上代码吧: import cv2 import numpy as np from PIL import Image area = def getWhitePixel(img): global ar ...