k8s部署

1 环境准备

1.1 服务器准备

服务器节点
192.168.0.7master节点
192.168.0.8node节点
192.168.0.9node节点

1.2 关闭防火墙

]# systemctl stop firewalld && systemctl disable firewalld

1.3 时间同步

]# dd

1.4 关闭swap分区

]# swapoff -a
]# vim /etc/fstab  #在fstab中卸载

1.5 设置免密登陆

]# ssh-keygen
]# ssh-copy-id root@ip #三台都设置

1.6 配置系统内核参数

  • 使流过网桥的流量也进入iptables/netfilter框架(如果报错,提示没有文件 modprobe br_netfilter 添加此模块)
]# echo -e 'net.bridge.bridge-nf-call-iptables = 1 \nnet.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf  && sysctl -p

2 配置yum源及k8s相关组件安装

2.1 注意:

所有节点都要这样操作

]# cd /etc/yum.repos.d
]# yum install wget -y
]# rm -f CentOS-*
]#wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo
]#wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
]#cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
]#wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
]#rpm -import rpm-package-key.gpg  #安装key文件
]#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
]#yum clean all  && yum makecache fast (更新源信息)

2.2 安装kubeadm 相关组件

]# cd
]# yum -y install kubelet kubeadm kubectl  (默认下载最新版本)
]# yum install docker  kubectl-1.10.0 kubeadm-1.10.0      kubelet-1.10.0 kubernetes-cni-0.6.0   (我个人选择的版本)

2.3 配置阿里云的加速器

  • 由于有些不可描述的原因,我们无法去Google直接下载相关镜像,所以配置使用阿里云上的镜像,为了提高下载速度,需要配置阿里云的加速器。
    地址: https://cr.console.aliyun.com/
    在这里插入图片描述

2.4 最后重启相关服务,并且设置开机自启

]# systemctl daemon-reload 
]# systemctl enable docker && systemctl restart docker
]# systemctl enable kubelet && systemctl restart kubelet

2.5 通过脚本下载k8s镜像

1.)1.10.0 版本下载:
~]# vim down_k8s.sh 
#!/bin/bash
images=(kube-proxy-amd64:v1.10.0 kube-scheduler-amd64:v1.10.0 kube-controller-manager-amd64:v1.10.0 kube-apiserver-amd64:v1.10.0
etcd-amd64:3.1.12 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube-dns-amd64:1.14.8
k8s-dns-dnsmasq-nanny-amd64:1.14.8)for imageName in ${images[@]} ; do
  docker pull keveon/$imageName
  docker tag keveon/$imageName k8s.gcr.io/$imageName
  docker rmi keveon/$imageName
done

2.)1.12.0版本下载:
#!/bin/bash
down_image_url=registry.cn-hangzhou.aliyuncs.com/kuberimages/
images=(kube-proxy:v1.12.3 kube-apiserver:v1.12.3 kube-controller-manager:v1.12.3 kube-scheduler:v1.12.3 etcd:3.2.24 coredns:1.2.2 flannel:v0.10.0-amd64 pause:3.1 kubernetes-dashboard-amd64:v1.10.0)for imageName in ${images[@]} ; do
  docker pull ${down_image_url}$imageName
  docker tag  ${down_image_url}$imageName k8s.gcr.io/$imageName
  docker rmi  ${down_image_url}$imageName
done
3.)1.13.0 版本下载:
kubeadm init     --apiserver-advertise-address=192.168.199.116     --image-repository registry.aliyuncs.com/google_containers     --kubernetes-version v1.13.1     --pod-network-cidr=10.244.0.0/16

~]# sh down_k8s.sh
~]# docker images

在这里插入图片描述

3 初始化集群

  • (仅在master节点操作)

3.1

]# kubeadm init --kubernetes-version=v1.10.0 --pod-network-cidr=10.244.0.0/16
#指定版本,需要与docker中的镜像版本一致,画红杠的地方一定要记住,找个地方保存起来

初始化后的输出内容

3.2 配置环境变量

]# mkdir -p $HOME/.kube
]#  cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
或者:
]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

3.3 查看集群状态

]# kubectl get nodes

集群状态

4 安装网络必要插件

  • flannel:
    (由于网络功能是作为插件存在的,k8s本身并不提供网络功能,所有我们需要自行安装,这里我们选择flannel)

4.1

  • flannel项目地址:https://github.com/coreos/flannel,根据项目的部署手册进行如下操作
[root@k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel或者:
[root@k8s-master ~]# wget  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml 
  • flannel支持多种模型
    VxLAN #vxLAN有以下两种模式
    (1) vxlan #叠加网络或者隧道网络,通过封装网络报文的方式使不同网段的pod之间可以通讯
    (2) Directrouting #直接使用主机的IP地作为网关,通过主机路由的方式与目标pod进行通讯,当目标pod与当前pod不在同一三层网络内,会自动降级为VxLAN模式
    host-gw: Host GateWay #与VxLAN的Directrouting模式相同,当目标pod与当前pod不在同一三层网络内时,pod之间无法通讯
    UDP: #早期由于Linux内核不支持VxLAN,host-gw又有非常高的入门门槛,udp是flannel最早期使用的模式,由于使用普通的udp报文通讯,性能非常差,在可以使用前面两种模式的情况下请勿使用该模式

#默认flannel的模式为vxlan,可以修改为性能更好的directrouting模式,修改见下图
在这里插入图片描述

4.2

在这里插入图片描述

5将所有node节点加入master节点

5.1

  • 之前有个让复制的命令
  • 所有node节点执行一次
    在这里插入图片描述
  • 执行后提示红框信息则表示成功

5.2 在master节点查看

在这里插入图片描述

  • 注意:
    刚添加完node节点的运行状态可能是 NotReady,等过几分钟就好了,如果一直没有变。那可能是网络插件安装有问题,请检查网络插件。

6 k8s常用命令说明

  • kubectl get #获取信息
]#kubectl get pods #查看pod
]#kubectl get deployment #资源类型
]#kubectl get service #查看中间层service,相当于DNAT
]#kubectl get ns #获取名称空间
]#kubectl get pods -n kube-system -o wide       #获取kube-system名称空间下的pod并展示详细信息
-n 后面接名称空间
-o ouput形式支持 wide/yaml/json
]#kubectl get pods -n develop --show-labels   # 显示develop名称空间下pod的标签

]#kubectl get  pods --show-labels -l xxx      # -l后面跟标签选择器或表达式,如: app=nginx,app!=nginx, “app in(nginx,ngx-app,xxx)”

]#kubectl get  pods --show-labels -l xxx  -L xxx  # -L 新定义一行来显示指定键值
  • kubectl create # 创建资源
]#kubectl create deploy xxx --image=xxx  #如果没有指定Namespace,创建的容器默认是在default ns下
  • kubectl delete #删除资源
]#kubectl delete deployment xxx
]#kubectl delete pods xxx
]#kubectl delete service xxx
  • kucectl describe #获取描述信息
]#kubectl describe service/xxx(service名称)
]#kubectl describe pod/xxx(pod名称)
  • kubectl exec #进入指定容器 相当于docker exec
]#kubectl exec -it nginx-app-5jyvm -- /bin/bash

]#kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]  
#POD中有多个容器需要 -c containername  指定执行命令的容器
  • kubectl attach # 连接pod
]#kubectl attach -it nginx-app-5jyvm(pod名称)
  • kubectl scale  # 扩容/缩容
]#kubectl scale --replicas=3 deploy/my-nginx(pod名称) # 将deploy下的my-nginx扩容为3个
  • kubectl run --image=xxx name_xx --port #启动容器
]#kubectl run --image=nginx nginx-app --port=80
  • kubectl expose #暴露端口
]#kubectl expose deployment nginx-app --type="NodePort" --port=80
 in default,pods only deploy on node,not on master, please use the node ip to access
  • kubectl logs #查看日志
]#kubectl logs -f nginx-app-zibvs(pod名称)#kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]   #POD中有多个容器需要 -c containername  指定执行命令的容器
  • kubectl explain # 讲解每个资源属性
]#kubectl explain pod 	
  • kubectl label # 标签操作
]#kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

]#kubectl label pods/dev-pod -n develop tier=frontend    # 增减tier标签  同时添加多个标签,使用空格分隔标签即可

]#kubectl label --overwrite pods/dev-pod -n develop app=dev-ngx  # overwrite app标签

]#kubectl label  pods/dev-pod -n develop tier-  # 删除tier标签, 使用“键名-”表示删除
  • kubectl annotate # 注解 类似于label操作
]#kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
  • kubectl patch #打补丁更新,支持json和yaml格式
]#kubectl patch (-f FILENAME | TYPE NAME) -p PATCH [options]

]#kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
  • kubectl rollout # 回滚
]#kubectl rollout SUBCOMMAND [options]

]#kubectl rollout status deployment myapp-deploy  # 查看回滚状态

]#kubectl rollout history deployment myapp-deploy  # 查看历史版本

]#kubectl rollout undo deployment myapp-deploy --to-revision=1   # 回滚到第1版
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s是一个用于容器编排和管理的开源平台,而Spring Boot是一个用于构建独立的、基于Spring的Java应用程序的框架。使用k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性。 引用中提到了使用k8s来快速部署一个Spring Boot项目,并体验k8s和实际项目的结合。这意味着通过k8s,你可以轻松地将你的Spring Boot应用程序部署到一个分布式系统中。 引用指出,尽管已经了解了如何通过其他方式部署Spring Boot应用程序,但是了解如何通过k8s部署仍然是必要的。因为k8s提供了许多功能和特性,例如自动扩展、负载均衡和故障恢复等,这些功能可以大大简化和改善应用程序的部署和管理。 引用提到了k8s部署Spring Boot项目的过程是相对简单的,目前可能只是半手动部署,但后续可以引入CICD(持续集成和持续部署)实现真正的自动化部署。这意味着你可以使用k8s和CICD工具来自动化构建、测试和部署Spring Boot应用程序,从而提高开发和部署的效率。 综上所述,通过k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性,并且可以使用CICD工具实现自动化部署。这将简化和改善应用程序的部署和管理,并提高开发和部署的效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [k8s部署springboot项目](https://blog.csdn.net/qq_34285557/article/details/124460872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [教你使用k8s部署springboot服务](https://blog.csdn.net/ww2651071028/article/details/129636489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值