K8S部署

一、单节点部署

k8s与docker交互:
kubelet ——》创建Pod (一组容器集合)kubelet ——》dokcer-api接口
在1.17之前K8s和docker的交互通过dockershim交互-》docker的CRI交互docker的CRI Container Runtime Instance : docker的运行时接口
CRI:容器从拉取镜像到启动运行和运行时交互,再到中止的整个生命周期简化: kubelet—》dockershim .——》docker-CRI交互—》创建这一组容器
1.17之后,因为K8S宣布摒弃docker,而是将K8S与container之间的交互接口改为contaiered,可以兼容多种类型的容器,而不仅仅只是docker
问题:从外界访问到pod中的容器,是怎么个流程??
外界访问到防火墙—》kube-proxy—》service —》 pod ip—》(K8S与docker 交互) dockershim —》CRI
(容器运行时接口)-》容器内的应用

master 192.168.133.50
node01 192.168.133.75
node02 192.168.133.100

1、关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0

2、变更主机名

[root@localhost ~]# hostname master
[root@localhost ~]# hostname node01
[root@localhost ~]# hostname node02
[root@localhost ~]# su
[root@master ~]# 
[root@node01 ~]# 
[root@node02~]# 
[root@master ~]# vim /etc/hosts                             三台都改

在这里插入图片描述

3、关闭swap,必须都关闭

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab  
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1                                                                         网络桥接
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

在这里插入图片描述

4、安装docker源

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker并设置开机自启

yum install -y docker-ce
systemctl start docker
systemctl enable docker

5、安装kubeadm、kubelet核kubectl

#指定安装源

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

指定安装版本

yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
[root@node02 ~]# rpm -qa | grep kube
kubeadm-1.15.0-0.x86_64
kubectl-1.15.0-0.x86_64
kubernetes-cni-0.8.7-0.x86_64
kubelet-1.15.0-0.x86_64

设置 kubelet开机自启

systemctl enable kubelet

6、master上操作初始化

[root@master ~]# kubeadm init \
--apiserver-advertise-address=192.168.133.50 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]#   sudo chown $(id -u):$(id -g) $HOME/.kube/config

7、查询

查询node节点状态

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   17m   v1.15.0

查看节点健康状态

[root@master ~]# kubectl get csr
NAME        AGE   REQUESTOR            CONDITION
csr-fxwzh   18m   system:node:master   Approved,Issued

查看pod信息

[root@master ~]# kubectl get pods [-n default]                                                         默认是默认名称空间
No resources found.
[root@master ~]# kubectl get pods --all-namespaces
[root@master ~]# kubectl get pods -A
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
kube-system   coredns-bccdc95cf-bqlhq          0/1     Pending   0          24m
kube-system   coredns-bccdc95cf-sgq6d          0/1     Pending   0          24m
kube-system   etcd-master                      1/1     Running   0          23m
kube-system   kube-apiserver-master            1/1     Running   0          23m
kube-system   kube-controller-manager-master   1/1     Running   0          23m
kube-system   kube-proxy-2m5nj                 1/1     Running   0          24m
kube-system   kube-scheduler-master            1/1     Running   0          23m
[root@master ~]# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-bccdc95cf-bqlhq          0/1     Pending   0          22m
coredns-bccdc95cf-sgq6d          0/1     Pending   0          22m
etcd-master                      1/1     Running   0          21m
kube-apiserver-master            1/1     Running   0          21m
kube-controller-manager-master   1/1     Running   0          21m
kube-proxy-2m5nj                 1/1     Running   0          22m
kube-scheduler-master            1/1     Running   0          22m

查看某一个pod的详细信息,也可以看node,server,后面一定要指定具体对象

[root@master ~]# kubectl describe pod coredns-bccdc95cf-bqlhq -n kube-system

8、安装pod网络插件(flannel)

[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

这时master节点上的状态就是ready了

[root@master ~]# kubectl get nodes -A
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   78m   v1.15.0

在这里插入图片描述

9、在master上打开监控

[root@master ~]# watch -n 1 kubectl get csr 

在这里插入图片描述

10、所有node节点上操作

docker pull lizhenliang/flannel:v0.11.0-amd64

11、加入集群

kubeadm join 192.168.133.50:6443 --token 2ra2st.181aau6zsjkvnfh8 \
    --discovery-token-ca-cert-hash sha256:59f0b469b18fc4b22d867efc5918c58e7862b4bfdef86be7987617045b4ddca7

在这里插入图片描述
k8s master节点放在node节点上的代理,同时为这个代理设置一个身份,就是bootstrap
master 上查询

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   102m    v1.15.0
node01   Ready    <none>   7m27s   v1.15.0
node02   Ready    <none>   7m27s   v1.15.0

在这里插入图片描述

12、给node节点打标签

[root@master ~]# kubectl label node node01 node-role.kubernetes.io/node=node
node/node01 labeled
[root@master ~]# kubectl label node node02 node-role.kubernetes.io/node=node
node/node02 labeled

在这里插入图片描述

13、重新生成token

#若token 过期或丢失,需要先申请新的token 令牌

[root@master ~]# kubeadm token create
skqg14.hugbx9sjfpptzc3w

#列出token

[root@master ~]# kubeadm token list  | awk -F" " '{print $1}' |tail -n 1
skqg14.hugbx9sjfpptzc3w

#然后获取CA公钥的的hash值

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'
(stdin)= 59f0b469b18fc4b22d867efc5918c58e7862b4bfdef86be7987617045b4ddca7

#替换join中token及sha256:
kubeadm join 192.168.226.128:6443 --token skqg14.hugbx9sjfpptzc3w
–discovery-token-ca-cert-hash sha256:59f0b469b18fc4b22d867efc5918c58e7862b4bfdef86be7987617045b4ddca7

二、多节点部署

在这里插入图片描述
关键是load balancer

三、新版本部署

1、关闭防火墙

2、改主机名

3、关闭swap

4、安装docker源

5、安装docker

yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker --now

或者

yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6

6、获取K8S源

7、安装新版本K8S

sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
systemctl enable --now kubelet

8、下载K8S核心组件

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images [@]}; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF

在这里插入图片描述

chmod +x ./images.sh && ./images.sh

在这里插入图片描述

9、初始化master的K8S

[root@master ~]# kubeadm init \
--apiserver-advertise-address=192.168.133.50 \
--control-plane-endpoint=master \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.9 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

###如果kubeadm init失败,则需要:
先,kubeadm reset(重置)并且根据提示,再删除一些目录,例如以下:

rm -rf $HOME/.kube
rm -rf /etc/kubernetes/admin.conf $HOME/.kube/config

在这里插入图片描述

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

10、下载网络插件calico

[root@master ~]# curl https://docs.projectcalico.org/manifests/calico.yaml -O

11、修改自定义网段

[root@master ~]# vim calico.yaml 

在这里插入图片描述

在这里插入图片描述

[root@master ~]# kubectl apply -f calico.yaml 

12、加入node

在master

[root@master ~]# watch -n 1 kubectl get pod -A

在这里插入图片描述
calico-node状态变更后
在这里插入图片描述
主节点变成ready
在这里插入图片描述
这时在node节点加入集群

kubeadm join master:6443 --token s53s4o.1mm1s2yrz95r45dv \
    --discovery-token-ca-cert-hash sha256:c8a76117c9f46c23666d1a72753455d1016fae689838f4e6dc38bebf3d1c5b52

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

13、重新定义node名称

[root@master ~]# kubectl label node node01 node-role.kubernetes.io/node=node
node/node01 labeled
[root@master ~]# kubectl label node node02 node-role.kubernetes.io/node=node
node/node02 labeled
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值