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 条评论
登录 后参与评论

相关文章

来自专栏假装我会写代码

又一篇 Deployer 的使用攻略

1816
来自专栏运维咖啡吧

记一次诡异的故障排查经历

管理员通过Jenkins调用“发布程序(代号varian,以下简称varian)”,发布程序会进行一系列的初始化操作,完成后生成Docker镜像上传到Docke...

772
来自专栏Hadoop实操

3.如何实现OpenLDAP的主主同步

前面Fayson文章讲《1.如何在CentOS6.5安装OpenLDAP并配置客户端》以及《2.OpenLDAP集成SSH登录并使用SSSD同步用户》,那么如何...

4725
来自专栏Aloys的开发之路

如何发布Maven依赖到中央仓库

平时我们都是从Maven中央仓库下载依赖,如果我们想发布我们自己写的Maven依赖到中央仓库供别人下载使用应该怎么办?这里以上传自己写的simian-maven...

1243
来自专栏Django Scrapy

安装python虚拟环境

1 virtualenv pip install virtualenv 普通安装 virtualenv python3env python3env是自己定的名字...

2906
来自专栏黑泽君的专栏

安装最新版本的Oracle公司的虚拟机软件 VirtualBox + 安装虚拟机 Windows XP 系统 + 安装 Oracle 11g 软件 + 出现 ERROR: ORA-12541: TNS

  VirtualBox的下载链接:https://www.virtualbox.org/wiki/Downloads

1351
来自专栏Jed的技术阶梯

《Maven实战》全书总结

把MAVEN_HOME/conf/seettings.xml cp 到 ~/.m2/下,在.m2下的settings.xml中所作的配置就是用户级别的配置,而直...

1841
来自专栏nice_每一天

理解 IntelliJ IDEA 的项目配置和Web部署

IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行。最近公司正好也是用之前自己比较熟悉的IDEA...

1832
来自专栏帘卷西风的专栏

Android NDK 建立cocos2dx项目

最近开始学习cocos2dx开发手机游戏,搞定了开发环境后,准备开始使用cocos2dx来写demo了。

871
来自专栏云原生架构实践

JHipster生成微服务架构的应用栈(四)- 网关微服务示例

默认端口号是8080,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。

1782

扫码关注云+社区