k8s部署(多节点)
文章目录
- 1.多节点k8s二进制部署
- 1.1部署思路
- 1.2实验环境
- 1.3部署master02
- 1.4部署nginx负载均衡
- 1.5测试
- 1.5.1keepalived测试
- 1.5.2创建pod测试
1.多节点k8s二进制部署
1.1部署思路
1.增加k8s管理节点master02
2.使用nginx负载均衡架构
1.2实验环境
master01:192.168.58.10
master02:192.168.58.60
node1:192.168.58.40
node2:192.168.58.50
nginx1:192.168.58.70
nginx2:192.168.58.80
nginx机器的IP需为部署k8s证书时设置的代理节点1和2的IP
已存在一个单节点的k8s架构,部署可参考以前博客
1.3部署master02
将master01的k8s工作目录、etcd证书、服务启动脚本拷贝给master02
scp -r /k8s/ root@192.168.58.60:/k8s/
scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.58.60:/usr/lib/systemd/system/
##无需增加etcd集群节点,master02无需启动etcd服务,但需要etcd证书文件,用于和etcd通信认证
修改apiserver配置文件中的IP地址
vi /k8s/kubernetes/cfg/kube-apiserver
--bind-address=192.168.58.60 \
--advertise-address=192.168.58.60 \
启动服务
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
添加k8s命令到环境变量
echo export PATH=$PATH:/k8s/kubernetes/bin >> /etc/profile
source /etc/profile
查看节点状态
kubectl get node
##两个节点状态为ready,即master02部署成功
1.4部署nginx负载均衡
两台nginx机器安装nginx且修改配置文件,开启四层转发
##这里只显示配置文件需要添加的部分
##由于是四层转发,所以不在http模块内,单独创建stream模块
##若配置文件stream报错,原因是nginx未装stream模块,需在源码目录./configure --with-stream然后重新编译安装make && make install
##日志目录不存在,需手动创建。。8j'm
stream {log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';access_log /var/log/nginx/k8s-access.log main;upstream kube-apiserver {server 192.168.58.10:6443;server 192.168.58.60:6443;}server {listen 6443;proxy_pass kube-apiserver;}
}mkdir -p /var/log/nginx/
systemctl restart nginx
netstat -napt | grep nginx
##发现多了一个6443端口的nginx监听进程
两台nginx机器部署keepalived
虚拟IP需设置在部署k8s证书时里面认证的虚拟IP地址
yum -y install keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalivedvrrp_script check_nginx { #定义一个函数check_nginxscript "/usr/local/nginx/sbin/check_nginx.sh" #函数内容为一个检测nginx服务是否存活的脚本
}global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id nginx_1 #定义该主机在群集中的id,nginx2机器需要命名为不一样的
}vrrp_instance VI_1 {state MASTER #nginx2节点命名为BACKUPinterface ens33 #修改网卡名,centos7开始为ens33,centos6为eth0virtual_router_id 51priority 105 #nginx2节点优先级设为95advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress { #设置VIP192.168.58.200}track_script { #该vrrp实例VI_1调用上面定义的函数check_nginxcheck_nginx}
}
两台nginx创建nginx服务检测脚本并启动keepalived
vi /usr/local/nginx/sbin/check_nginx.sh
count=$(ps -ef |grep nginx |egrep -cv "grep|$$") #查看nginx进程
if [ "$count" -eq 0 ];then #如果nginx进程关闭了,则关闭keepalived服务systemctl stop keepalived
fichmod +x /usr/local/nginx/sbin/check_nginx.sh
systemctl start keepalived
检查虚拟IP
ip addr
nginx1机器上虚拟IP生效,nginx2没有
修改两个k8s-node节点配置文件,指定服务端IP为虚拟IP
vi /k8s/kubernetes/cfg/bootstrap.kubeconfig
server: https://192.168.58.200:6443vi /k8s/kubernetes/cfg/kubelet.kubeconfig
server: https://192.168.58.200:6443vi /k8s/kubernetes/cfg/kube-proxy.kubeconfig
server: https://192.168.58.200:6443systemctl restart kubelet
systemctl restart kube-proxy
在nginx1查看日志
k8s-node成功访问虚拟IP,且负载均衡已生效
1.5测试
1.5.1keepalived测试
nginx1服务器上
pkill nginx
ip addr
##此时虚拟IP已不存在
nginx2服务器上
ip addr
虚拟IP已漂移到nginx2上,keepalived服务正常
恢复
nginx1重启服务,虚拟IP漂移回来
#nginx1
systemctl start nginx
systemctl start keepalived
ip addr
1.5.2创建pod测试
创建nginx的pod
#master节点上
kubectl run nginx --image=nginx
kubectl get pods #查看pod名,状态,状态需为running,不能为ContainerCreating(容器创建中)
查看服务的pod的日志
kubectl logs nginx-6db489d4b7-7v2fb
报错:
因为使用了system:anonymous(匿名)用户进行操作,没有权限
解决:
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
#将集群中的匿名用户绑定到管理员用户,使其拥有权限
再次查看服务的pod的日志
kubectl logs nginx-6db489d4b7-7v2fb
此时可正常查看,但暂时没有日志产生
查看pod完整信息并访问pod
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6db489d4b7-7v2fb 1/1 Running 0 8m59s 172.17.0.2 192.168.58.50 <none> <none>##在启动该pod的node上访问
curl 172.17.0.2
再次查看日志
kubectl logs nginx-6db489d4b7-7v2fb
k8s部署(多节点)相关推荐
- K8S部署单节点zookeeper服务
要使用Kubernetes (K8s) 部署单节点Zookeeper服务,需要执行以下步骤: 0.创建Zookeeper镜像 该镜像包含Zookeeper二进制文件和配置文件,使用Dockerfile ...
- k8s ready 不调度_【零基础学云计算】k8s部署---master节点组件部署(三)
kube-APIserver组件介绍 kube-APIserver提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中 ...
- kubernetes (k8s)的二进制部署单节点(etcd和flannel网络)
文章目录 1 常见的k8s部署方式 2 环境准备 2.1 拓扑 2.2 所有主机关闭防火墙,selinux,swap 2.3 所有主机配置主机名,并再maser上做主机映射 2.4 所有主机将桥接的I ...
- K8S——关于K8S控制台的yaml文件编写(基于上一章多节点K8S部署)
K8S--关于K8S控制台的yaml文件编写(基于上一章多节点K8S部署) 一.yaml文件编写流程 二.证书自签 一.yaml文件编写流程 rbac.yaml---->secret.yaml- ...
- K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)
K8S--单master节点和基于单master节点的双master节点二进制部署 一.准备 二.ETCD集群 1.master节点 2.node节点 三.Flannel网络部署 四.测试容器间互通 ...
- k8s二进制单节点部署
k8s二进制单节点部署 常见的k8s部署方式 Kubernetes二进制部署(单节点) 环境准备 部署etcd集群(这里就不在单独的服务器上部署,直接部署在各节点上,节省资源) 下载证书制作工具 利用 ...
- K8S二进制部署---单节点master
目录 一.环境准备 二.部署etcd集群 一.环境准备 先准备3台主机,首先搭建Master单节点集群. 因为 Master 是整个 K8S 集群的大脑,没有 Master 接下来的每一步操作都会变得 ...
- 啃K8s之快速入门,以及哭吧S(k8s)单节点部署
啃K8s之快速入门,以及哭吧S(k8s)单节点部署 一:Kubernets概述 1.1:Kubernets是什么? 1.2:Kubernets特性 1.3:Kubernets群集架构与组件 1.3.1 ...
- kubeadm部署k8s多master节点的高可用集群
外部etcd集群部署可参考:https://www.cnblogs.com/zhangmingcheng/p/13625664.html Nginx+Keepalived集群搭建 参考:https:/ ...
- 基于VMware采用kubeadm方式部署单节点k8s集群(练习使用)
1.虚拟机安装centos7.6 1.1 导入镜像 这里选择的版本是:CentOS-7-x86_64-DVD-2207-02.iso(即centos7.6的镜像) 镜像下载地址: http://mir ...
最新文章
- [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- 大数据时代,如何构建精准用户画像,直击精细化运营
- 虚拟机 克隆:完整克隆 模式
- ES索引模板——就是在新建索引时候指定的正则匹配来设置mapping而已,对于自动扩容有用...
- 2020-12-14 Python PyCharm新建项目自动添加介绍和utf-8编码
- 函数在内存中的具体执行
- CH - 0601 Genius ACM(倍增+归并排序)
- body curl 设置post_curl 命令详解
- spring5(6) ---Ioc和DI
- 瑞友天翼提示mysql error_瑞友天翼加载应用程序出错解决方法
- 快手测试开发工程师面试
- JAVA 对 海康SDK二次开发
- matlab 图像处理之拟合圆
- 网页删除mysql数据库_网站数据库被删除了
- UE4角色受击动画,随机播放音效
- stl如果开o2_Flow-3D地形模型处理
- Python和C语言哪个更容易学,感觉学了C语言有点难,只学过C语言的大学生很迷茫?
- JZOJ.4377[GDOI2016模拟3.10]习用之语 解题报告
- OpenGL 图形库的使用(二十五)—— 高级OpenGL之帧缓冲Framebuffers
- 日语50音图学习笔记