小白到运维工程师自学之路 第七十五集 (Kubernetes 企业级高可用部署)2

8、添加master节点

复制代码
在k8s-master2和k8s-master3节点创建文件夹
mkdir -p /etc/kubernetes/pki/etcd

在k8s-master1节点执行
从k8s-master1复制密钥和相关文件到k8s-master2和k8s-master3
scp /etc/kubernetes/admin.conf root@192.168.77.15:/etc/kubernetes 
scp /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-ca.*} root@192.168.77.15:/etc/kubernetes/pki
scp /etc/kubernetes/pki/etcd/ca.* root@192.168.77.15:/etc/kubernetes/pki/etcd

scp /etc/kubernetes/admin.conf root@192.168.77.16:/etc/kubernetes 
scp /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-ca.*} root@192.168.77.16:/etc/kubernetes/pki
scp /etc/kubernetes/pki/etcd/ca.* root@192.168.77.16:/etc/kubernetes/pki/etcd
复制代码
kubeadm token create --ttl 0 --print-join-command
kubeadm token list

将其他master节点加入集群

k8s-master2和k8s-master3都需要加入

令牌最后要加上**--control-plane**

复制代码
kubeadm join master.k8s.io:6443 --token v1igjz.rsq683im1cbqksur     --discovery-token-ca-cert-hash sha256:c4b73babba1252778d643f80c4c6f77242a3f0aa7a670090bda682eabc12e225 --control-plane

cni-plugins-linux-amd64-v0.8.6.tgz(需要去网上下载)

复制代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
tar xf cni-plugins-linux-amd64-v0.8.6.tgz
cp flannel /opt/cni/bin/
docker load < flannel_v0.12.0-amd64.tar
kubectl get nodes

9 、加入Kubernetes Node

直接在node节点服务器上执行k8s-master1初始化成功后的消息即可

复制代码
kubeadm join master.k8s.io:6443 --token v1igjz.rsq683im1cbqksur     --discovery-token-ca-cert-hash sha256:c4b73babba1252778d643f80c4c6f77242a3f0aa7a670090bda682eabc12e225 

docker load < flannel_v0.12.0-amd64.tar

node2和node3的操作和node1一样

查看节点状态

四、测试Kubernetes集群

复制代码
所有node节点下载nginx
docker pull nginx

在master1上创建一个pod
mkdir demo
cd demo
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector: 
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
复制代码
kubectl create -f nginx-deployment.yaml
kubectl get pods
kubectl get pods -o wide

创建Service资源清单

在创建的 nginx-service 资源清单中,定义名称为 nginx-service 的 Service、标签选择器为 app: nginx、type 为 NodePort 指明外部流量可以访问内部容器。在 ports 中定义暴露的端口库号列表,对外暴露访问的端口是 80,容器内部的端口也是 80。

复制代码
vim nginx-service.yaml
kind: Service
apiVersion: v1
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
targetPort: 80
复制代码
kubectl create -f nginx-service.yaml
kubectl get svc

通过虚拟IP访问浏览器

测试负载均衡

将master关机模拟服务器宕机,然后再查看

再访问web页面

可以看到web应用正常工作

去master2上查看,可以发现虚拟IP已经转移到了master2的ens33网卡上了,说明负载均衡配置成功

域名也是可以访问的但是由于还要配置windows的防火墙与dns这里就适用命令测试了

以上就是Kubernetes 企业级高可用部署

如有错误欢迎各位大佬批评指正,我们共同进步

相关推荐
绿虫光伏运维4 分钟前
光伏监控运维系统哪家靠谱?
运维·光伏管理·光伏运维
木雷坞30 分钟前
Docker Hub、GHCR、Quay 混在一起后,镜像源要分开测
运维·docker
qq_4523962338 分钟前
第十五篇:《Docker 与 Kubernetes 集成:从 Swarm 到 K8s 的迁移》
docker·容器·kubernetes
HackTwoHub1 小时前
K8s综合渗透测试工具,集成信息搜集、权限逃逸、横向移动,一站式搞定全流程渗透测试工作
人工智能·安全·web安全·云原生·容器·kubernetes·系统安全
LT10157974441 小时前
2026年物流RPA选型指南:物流供应链自动化场景适配
运维·自动化·rpa
AC赳赳老秦1 小时前
OpenClaw任务复盘自动化:统计每日完成工作、遗留问题,优化工作节奏
java·大数据·linux·运维·服务器·数据库·openclaw
雾岛心情1 小时前
【小铭邮箱】小铭邮箱工具箱公司版本导入VCF文件
运维·工具·exchage·o365·小铭邮件工具箱(公司版)
做个文艺程序员1 小时前
第05篇:K8s CI/CD 全流程:GitOps × ArgoCD × Harbor——Java SaaS 从代码提交到生产部署一键直达
ci/cd·kubernetes·argocd
kaoa0001 小时前
Linux入门攻坚——79、XEN虚拟化-2
linux·运维·开发语言
AOwhisky1 小时前
学习自测(MySQL系列第一期、第二期)
linux·运维·数据库·学习·mysql·云计算