K8S集群部署
1.环境准备,使用三台机器一主两从1. 设置主机名与时区timedatectl set-timezone Asia/Shanghai #三台虚拟机都要执行hostnamectl set-hostname master#132执行hostnamectl set-hostname node1#133执行hostnamectl set-hostname node2#...
1.环境准备,使用三台机器一主两从
1. 设置主机名与时区
timedatectl set-timezone Asia/Shanghai #三台虚拟机都要执行
hostnamectl set-hostname master #132执行
hostnamectl set-hostname node1 #133执行
hostnamectl set-hostname node2 #137执行
2. 添加hosts网络主机配置,三台虚拟机都要设置
vim /etc/hosts
192.168.163.132 master
192.168.163.133 node1
192.168.163.137 node2
3. 关闭防火墙,三台虚拟机都要设置,生产环境跳过这一步
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #Linux安全增强关闭
setenforce 0 #设置为临时生效
systemctl disable firewalld #禁用防火墙
systemctl stop firewalld #关闭防火墙
2.安装Kubeadm快速部署工具(三台虚拟机都需要)
1. 将镜像包上传至服务器每个节点
mkdir /usr/local/k8s-install
cd /usr/local/k8s-install
XFTP上传安装文件
2. 按每个Centos上安装Docker
tar -zxvf docker-ce-18.09.tar.gz
cd docker
yum localinstall -y *.rpm #加载当前目录下所有rpm文件进行安装
systemctl start docker #启动docker
systemctl enable docker #设置docker自动启动
3. 确保从cgroups均在同一个从groupfs
#cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
#cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。
#子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。
#在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源
docker info | grep cgroup
如果不是groupfs,执行下列语句
cat << EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF
systemctl daemon-reload && systemctl restart docker
4. 安装kubeadm
# kubeadm是集群部署工具
cd /usr/local/k8s-install/kubernetes-1.14
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm
5. 关闭交换区
swapoff -a
vi /etc/fstab
#swap一行注释
6. 配置网桥
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
7. 通过镜像安装k8s
cd /usr/local/k8s-install/kubernetes-1.14
docker load -i k8s-114-images.tar.gz #加载本地镜像文件
docker load -i flannel-dashboard.tar.gz
3.利用Kubeadm构建集群
1. master主服务器配置
kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
#查看存在问题的pod
kubectl get pod --all-namespaces
#设置全局变量
#安装flannel网络组件
kubectl create -f kube-flannel.yml
2. 加入NODE节点
kubeadm join 192.168.4.130:6443 --token 911xit.xkp2gfxbvf5wuqz7 \
--discovery-token-ca-cert-hash sha256:23db3094dc9ae1335b25692717c40e24b1041975f6a43da9f43568f8d0dbac72
如果忘记
在master 上执行kubeadm token list 查看 ,在node上运行
kubeadm join 192.168.163.132:6443 --token aoeout.9k0ybvrfy09q1jf6 --discovery-token-unsafe-skip-ca-verification
kubectl get nodes
3. Master开启仪表盘
kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml
kubectl -n kube-system get svc
http://192.168.163.132:32000 访问
4.Deployment脚本部署Tomcat集群
5.外部访问Tomcat集群(NodePort方式)
6.基于NFS实现集群文件共享
master上执行:
创建www-data目录:集群共享的文件目录
共享文件夹的设置:master的ip/掩码
启动nfs与rpc绑定服务:
检验配置是否正确:
node节点:
查看master对外的共享文件夹:
挂载master上文件夹,本地映射路径/mnt:
7.部署配置挂载点
volumees-name:挂载数据卷的别名
hostPath-path:宿主机的目录
volumeMounts:挂载点
即:/mnt中的文件替换掉webapps中的文件
8.利用Rinted对外提供Service负载均衡支持
注释掉NodePort方式的:
创建并查看ip地址:
外部无法通过10.100.22.231来访问,使用Rinetd进行端口转发:
调整允许映射的端口范围:
端口转发:
加载rinetd.conf文件:
浏览器访问:
9.更新集群配置与资源限定
requests:当前容器运行的最低系统要求
limits:限制容器最多使用的资源
修改yml:
跟新集群配置命令:
更多推荐
所有评论(0)