centos7.6 安装k8s,k8s部署中间件、应用
K8S介绍
- CentOS7版本部署K8S单机版(本次部署基于XX云环境部署,当然也能直接购买云厂商容器服务)
安装建议
- 第一次用云环境,安全方面实属萌新,在第一次部署之后,遭到了挖矿攻击。所以重置了云服务器,吸取教训从0开始部署k8s单机版。
- 安全方面,建议:首先建议走内网部署,所有的操作都基于内网操作(大神忽略)。
资源配置
- CPU建议:资源配置建议2核,甚至更多
- 内存建议:4G甚至更多
- 硬盘建议:30G
安全准备(云机器推荐)
- 为了能在整个过程比较处于比较安全的环境下,在云服务器部署k8s,中间会涉及到部分端口开放到公网中。非程序入口端口(非80等)暴露在公网中是不安全的。
- 安全方面笔者推荐:第一修改连接云服务器的默认端口22,第二笔者部署使用openVpn,只有笔者的本地ip能使用此vpn连接云服务器与操作云服务器,并且VPN整个部署流程傻瓜式部署。
1. 修改Linux云机器默认ssh端口,具体操作如下:
-
使用超级管理员登录云服务(建议登录云服务器使用秘钥方式,而不是密码登录方式),云服务器具体步骤看云厂商秘钥登录步骤,本地虚机参考文章Linux安全之SSH 密钥创建及密钥登录。
-
进入目录/etc/ssh,vim sshd_config。修改port为你要修改的端口,保存退出。

-
重启ssh 命令: service sshd restart,然后查看netstat -ltnp 查看 监听端口及类型。

-
看到上面信息即为修改成功
2. 安装部署OpenVpn
-
第一步下载sh脚本文件(地址:https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh)

注意:(云机器可以直接wget,不能就打开浏览器,直接从页面copy,copy的时候需要注意语法问题,window的语法到linux会使用不了,需要转变成linux语法) ,不然window语法有可能会出现error例如:syntax error near unexpected token 'elif'错误
-
云服务器直接在wget所在目录执行脚本,本地copy方式需要将脚本上传到云服务器的文件目录中,然后执行sh openvpn-install.sh命令。如果执行命令没反应说明执行失败,请检查是否出现了语法问题或者查看执行结果信息显示。
sh open-install.sh -
执行脚本,执行脚本会不断的弹出配置选择信息,如下所示
-
第一个会弹出选择ipv4的框选择,如果你只有一个ipv4地址,脚本只会给你罗列一个ip,你只需要回车即可。但是如果你存在其他可能存在的ipv4选择,例如:docker网络地址,则他会把这些地址全部罗列出来,你需要选择eth0地址,然后回车。
-
ipv6地址选择,这默认是公网地址(个人理解),由于我用的是云机器,所以默认显示了云服务器的外网地址,此时直接回车即可。
-
protocol选择,有两个选项:TCP和UDP,选择UDP方式。
-
Select a DNS server for the clients。你要选择哪个dns解析服务,我选择了1,同机器本地配置一样。
-
接下来是端口选择,填写一个端口,此端口是VPN的服务端口。注意:云机器,此端口需要对外开放,以便开发人员进行连接,如果是个人开发人员,建议进一步限制访问此端口的Ip,只有个人的ip能连接上此端口。
-
填写本次安装要生成的vpn配置文件名字,填写这个vpn client的名字,以便生成vpn连接配置文件。回车继续,接下来净净等待安装完成,安装完成后,会在root根目录下形成vpn连接配置文件。
-
如果需要添加新的人员能够连接此云服务器,只需要再次执行sh openvpn-install.sh脚本。此时再执行这脚本,他就变成了一个部署管理器,你可以再添加一个新的client,移除一个存在的clietn,甚至是卸载此vpn软件。如下图所示:

-
拿到.ovpn结尾的文件后,本地安装vpn软件 ( vpn下载 提取码:ky77),安装方式傻瓜式安装,全部下一步即可。最后打开软件,右键该软件选择导入配置文件。导入成功后选择导入的配置文件选择连接即可。

-
部署K8S单机版
安装准备
-
一台主机:10.0.4.6 ,配置 2C 4g
-
更改节点hostname
hostnamectl set-hostname k8s-master
-
查看修改后的hostname
hostname
-
所有节点关闭防火墙
systemctl stop firewalldsystemctl disable firewalld -
关闭selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/configsetenforce 0 -
关闭swap
- 临时关闭
cat /etc/fstab #注释到swap那一行- 永久关闭
sed -i 's/.*swap.*/#&/g' /etc/fstab -
节点添加主机名与ip的对应关系
cat >> /etc/hosts <<EOF 10.0.4.6 k8s-master EOF -
将桥接的IPv4流量传递到iptables的链
cat /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOFsysctl --system -
安装docker
yum -y install wgetwget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum -y install docker-ce-19.03.12-3.el7 -
启动docker,并设置docker开机自启
systemctl start dockersystemctl enable docker -
配置加速,并设置驱动
cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://6ze43vnb.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2"} EOF -
加载daemon并重启docker
systemctl daemon-reloadsystemctl restart docker -
添加阿里云YUM源
cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF -
安装kubeadm,kubelet和kubectl
- 这里指定了版本号,若需要其他版本的可自行更改
yum install -y kubelet-1.18.6 kubeadm-1.18.6 kubectl-1.18.6systemctl enable kubelet -
下载k8s所需要的容器
- 查看所需要的容器
kubeadm config images list- 国外环境:下载所需要的容器
kubeadm config images pull- 国内环境:使用阿里云镜像仓库下载(国内环境该命令可不执行,下步骤kubeadm init已经默认为国内环境):
kubeadm configimages=( kube-apiserver:v1.18.6 kube-controller-manager:v1.18.6 kube-scheduler:v1.18.6 kube-proxy:v1.18.6 pause:3.2 etcd:3.4.3-0 coredns:1.6.7) for imageName in ${images[@]} ; do docker pull registry.cn- hangzhou.aliyuncs.com/google_containers/${imageName} docker tag registry.cn- hangzhou.aliyuncs.com/google_containers/${image} k8s.gcr.io/${imageName}done -
初始化master节点
- 只在master节点执行,由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址,执行成功以后最后结果会输出
kubeadm init \ --apiserver-advertise-address={云服务器内网地址} \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.6 \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16- 上述安装成功后执行
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config -
master搭建成功后可看到如下
kubeadm join 10.0.4.6:6443 --token uvm8k1.k9qtxugm23vysj8b \ --discovery-token-ca-cert-hash sha256:5764ff5718add630baefb352d08d9cf9944a4cb1eab571bc82c51c808c9cb49a -
本次安装属于单机安装,如果集群安装,则在出现上面提示时,使用其他节点(非master)节点输入以上命令,来加入当前k8s集群。
安装Pod网络插件(CNI)
-
到http://ip.tool.chinaz.com/raw.githubusercontent.com查询raw.githubusercontent.com的真实ip,然后在host中配置 xxx.xxx.xxx.xxx raw.githubusercontent.com
-
执行下面脚本
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 查看安装状态
kubectl get pods -n kube-system
- 然后查询出来的状态为为Running才可正常使用
安装kuboard
-
需要先安装ingress
-
本次通过上传压缩包方式进行安装
-
百度网盘 提取码w3n9
-
执行命令
kubectl label nodes k8s-master edgenode=true -
文件下载好后上传至服务器中,创建个目录 将下载的文件都上传。共有3个文件
-
安装ingress
kubectl apply -f ingress-deploy.yaml -
查看安装状态
kubectl get pod -o wide -n ingress-nginx -
安装kuboard
kubectl apply -f kuboard.yaml -
查看kuboard状态
kubectl get pods -l k8s.kuboard.cn/name=kuboard -n kube-system -
安装成功后,获取kuboard管理员token
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard- user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d) -
当然也能获取只读权限的token
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d) -
登录kuboard 宿主机内网ip,端口32567,进入页面后输入token,点击登录。
安装Metrics-Server服务
-
部署这个服务是为了能方便在kuboard中显示每个节点的资源使用情况
-
下载安装包并解压
wget https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gztar -zxvf v0.3.6.tar.gzcd metrics-server-0.3.6/deploy/1.8+/ -
备份配置文件
copy metrics-server-deployment.yaml metrics-server-deployment.yaml_back -
软件最外层执行
kubectl apply -f metrics-server-0.3.6/deploy/1.8+/ -
查看执行状态
kubectl top node -
部署成功后等待3-5分钟,再使用kubectl top node命令查看
开发者使用docker,以及添加docker仓库
准备阶段
- 首先要有一个镜像仓库。可以选择阿里云。新建账号和新建仓库等操作这里不再具体描述。
idea使用docker file打包镜像同时上传至个人镜像仓库步骤
-
docker开放2375端口,安装链接,此步骤需要慎重,由于笔者使用vpn,限制只能本机ip才能正常去操作云服务器。如果不是走笔者推荐的openvpn,不建议使用此步骤!!
-
idea编写dockerfile文件,同时配置docer


-
云机器登录连接docker仓库
kubectl create secret docker-registry username --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=yourusername--docker-password=yourpassword --docker-email= "your email" --namespace=you namespace -
idea通过打包好镜像文件,推送到云机器的docker仓库上,再从云机器的docker仓库推送到远端阿里镜像仓库。
kuboard安装中间件
-
k8s使用nfs作为存储技术
-
云机器安装nfs,安装链接
-
kuboard创建存储pv

kuboard使用helm安装中间件
-
使用helm是为了能傻瓜式的部署中间件,无需接触docker操作,只需要下载values.yaml配置文件,修改关键配置:如中间件密码信息等、集群每个节点的分片数、资源资源限制大小等。修改完成上传至宿主机,执行helm命令即可一键部署,日常使用helm即可满足。
-
安装helm,安装链接
使用helm安装redis cluster集群版
-
进入bitnami站点
-
tab选择kubernetes
-
搜索redis ,选择点击redis cluster
-
helm添加bitnami源,这里不在描述
-
找到下载values.yaml的地方,下载这个配置,下载到本地 然后进行基础的修改,如集群的副本数、集群密码等
-
将values.yaml上传至宿主机,并在上传的当前目录使用helm命令进行安装,安装前需要在kuboard建一个对应的命名空间给redis使用
helm install myredis -f ./config.yaml bitnami/redis-cluster -n redis
学无止境,很多地方 不太了解,所以细节方面会有问题。有什么问题可以私聊我 ,我进行修正。
上文部分内容引用自:kubernetes安装-CentOS7
上文部分内容引用自:k8s 的初步集群安装

浙公网安备 33010602011771号