kubernetes学习记录(2)——基于Centos7.2的kubernetes集群自动安装与配置

kubernetes集群的解决方案为:使用VMware Workstation Pro,安装3台Centos7 Minimal版(无图形化界面,防止电脑卡顿)的虚拟机。一台作为Master,另外两台作为Node。使用xshell软件操作虚拟机。

基于二进制文件离线安装的记录在kubernetes工作记录(1)——kubernetes1.7.4版集群的离线安装搭建过程记录 中,集成了CA认证、Flannel网络覆盖,经过多人测试,脚本没有问题。

通过xshell,可以使用rz(上传文件)、sz(下载文件)进行文本操作。需要先进行安装。Minimal版也不包括vim,需要自己安装。

yum -y install lrzsz vim

开发中一般最让人头疼的就是环境的搭建,在此,我初步学习了shell脚本的编写,虽然语法比较小白,但已能完成Master和Node服务器的自动安装与配置。下面分别进行记录。脚本中的IP等配置需要自己修改

1)Master端的安装与配置

采用的shell脚本为init-master-test.sh

#!/bin/bash
#关闭防火墙,并关闭防火墙的开机自启动安全的做法是在防火墙上配置各组件需要相互通信的端口号,这里选择直接禁用防火墙。
systemctl stop firewalld
systemctl disable firewalld
#禁用selinux,修改/etc/selinux/config
#SELINUX=enforcing改为SELINUX=disabled
echo "update /etc/selinux/config"
sed -i 's/enforcing/disabled/g' /etc/selinux/config
#安装etcd和kubernetes-master
#etcd为kubernetes集群的主数据库,配置文件通常不需要特别的参数配置,默认将监听127.0.0.1:2379地址供客户端链接使用,shell脚本执行后,可以通过etcdctl cluster-health验证etcd是否正确启动
yum -y install etcd kubernetes-master
#修改apiserver的配置文件/etc/kubernetes/apiserver
#修改-insecure-bind-address(apiserver绑定主机的非安全IP地址,改为masterip表示绑定master地址)
echo "update /etc/kubernetes/apiserver"
sed -i 's!KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"!KUBE_API_ADDRESS="--insecure-bind-address=192.168.121.143"!' /etc/kubernetes/apiserver 
#修改kubernetes的配置文件/etc/kubernetes/config
#KUBE_MASTER:指定apiserver的url地址。我的master服务器ip为192.168.121.143
echo "update /etc/kubernetes/config"
sed -i 's!127.0.0.1!192.168.121.143!' /etc/kubernetes/config
systemctl daemon-reload
#让etcd kube-apiserver kube-scheduler kube-controller-manager随开机启动
systemctl enable etcd kube-apiserver kube-scheduler kube-controller-manager
#启动或重启etcd kube-apiserver kube-scheduler kube-controller-manager
systemctl restart etcd kube-apiserver kube-scheduler kube-controller-manager

在root权限下执行脚本。 注意,在执行脚本之前,需要修改脚本里的Master IP地址 注意编码格式,有时脚本执行错误是因为编码格式的原因。如果直接在vim里编辑可以避免,在windows下编辑,自己注意转码。

sh init-master-test.sh

执行完成后,验证Kubernetes Master各个组件的健康状态。我的Master IP为192.168.121.143。

kubectl -s http://192.168.121.143:8080 get componentstatus

如果该指令执行错误,则安装配置过程出现了错误。

至此,Master端算是简易安装配置起来了,覆盖网络、DNS、安全认证等内容以后再研究。

2)Node端的安装与配置

采用的shell脚本为init-node-test.sh

#!/bin/bash
#关闭防火墙,并关闭防火墙的开机自启动
#安全的做法是在防火墙上配置各组件需要相互通信的端口号,这里选择直接禁用防火墙。
systemctl stop firewalld
systemctl disable firewalld
#禁用selinux,修改/etc/selinux/config
#SELINUX=enforcing改为SELINUX=disabled
echo "update /etc/selinux/config"
sed -i 's/enforcing/disabled/g' /etc/selinux/config
#安装kubernetes-node(会自动安装docker)
yum -y install kubernetes-node
#修改kubernetes的配置文件/etc/kubernetes/config
#KUBE_MASTER:指定apiserver的url地址。我的master服务器ip为192.168.121.143
echo "update /etc/kubernetes/config"
sed -i 's!127.0.0.1!192.168.121.143!' /etc/kubernetes/config
#改成网易蜂巢云的镜像源,加速下载docker镜像
echo "update /etc/docker/daemon.json"
sed -i 's!{}!{"registry-mirrors":["http://hub-mirror.c.163.com"],"insecure-registries":["192.168.121.140:5000"]}!' /etc/docker/daemon.json
#修改kubelet的配置文件/etc/kubernetes/kubelet
#修改KUBELET_HOSTNAME,在此我改成了node ip
#修改KUBELET_API_SERVER,我的Master地址为192.168.121.143
echo "update /etc/kubernetes/kubelet"
sed -i 's!KUBELET_HOSTNAME="--hostname-override=127.0.0.1"!KUBELET_HOSTNAME="--hostname-override=192.168.121.144"!' /etc/kubernetes/kubelet
sed -i 's!KUBELET_API_SERVER="--api-servers=http://127.0.0.1:8080"!KUBELET_API_SERVER="--api-servers=http://192.168.121.143:8080"!' /etc/kubernetes/kubelet
sed -i 's!KUBELET_ARGS=""!KUBELET_ARGS="--cluster_dns=10.254.10.2 --cluster_domain=cluster.local"!' /etc/kubernetes/kubelet
sed -i 's!KUBELET_ADDRESS="--address=127.0.0.1"!KUBELET_ADDRESS="--address=192.168.121.144"!' /etc/kubernetes/kubelet
systemctl daemon-reload 
systemctl restart docker kubelet kube-proxy
systemctl enable docker kubelet kube-proxy

root权限下执行脚本。 注意,每个Node在执行脚本之前,需要修改脚本里的Master IP地址,以及KUBELET_HOSTNAME改为Node的HostName,如果HostName不是IP地址的话,需要在Master配置HOST和IP的映射

sh init-node-test.sh

安装部署完成后,在Master上验证运行

kubectl get nodes

至此,Kubernets基本集群搭建完毕。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的博客

XHProf安装

下载地址: https://pecl.php.net/package/xhprof [xhprof-0.9.4] wget http://pecl.php...

2975
来自专栏owent

Linux 编译安装 GCC 4.8

GCC4.8发布啦,这个脚本在之前4.7的基础上做了点改进,移除一些过时的组件,增加了检测不到时自动下载源码包

852
来自专栏我的博客

JQuery实现双击编辑异步更新

<script type="text/javascript"> $(function(){ $("tbody>tr>td").dblclick(funct...

2986
来自专栏腾讯云容器服务团队的专栏

腾讯云容器服务的滚动升级使用简介

滚动升级是一种多副本服务的升级方式,其特点是能够保证升级过程中服务不中断,对外界无感知。其原理大致为循环的执行以下步奏直至所有容器都被更新,本文将对其使用步骤进...

7280
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令十二

有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的

533
来自专栏从零学习云计算

openshift/origin学习记录(11)——赋予用户集群管理员权限

由于system:admin默认没有密码,没法登录web console,这里通过指令给账号dev赋予集群管理员权限。 # oc login -u sys...

2750
来自专栏西安-晁州

centos下mongodb安装

安装说明: 系统环境:Centos-6.5 安装软件:mongodb-linux-x86_64-2.4.9.tgz 下载地址:http://www.mongod...

2520
来自专栏小白安全

本地搭建安全狗无法安装插件问题的解决方法

一般是由于找不到apache服务名 其实很简单就可以解决的。 安装步骤:进入Apache安装目录下的bin目录: cd D:phpStudyAp...

2746
来自专栏Java开发

Linux中Apache(httpd)安装、配置

1.httpd.conf是主配置文件,你可以按需更改,一般来说可能需要自定义端口,那么就vim修改httpd.conf文件的监听端口,改为你希望的

1003
来自专栏机器学习实践二三事

pip安装报错'not a supported wheel on this platform'

这个错误很常见,解决方法是改名,首先要获得在你的机器的平台上的合法名称: import pip pip.pep425tags.get_supporte...

2207

扫码关注云+社区