本人已参与【新人创作礼】,一起开启掘金创作之路。
什么是Kubernetes?
Kubernetes简称K8s,是一个跨主机集群的开源的容器调度平台,他可以自动化应用容器的部署,扩展和操作,提供以容器为中心的基础架构,谷歌旗下开源软件。
kubernetes都能做什么?
1. 可以进行一些自动化的部署和复制
通过脚本规划好容器在哪台服务器运行、运行多少副本,K8S都能自动创建部署
2. 随时扩展和收缩容器规模
K8S支持自动或者手动的调节容器规模,例如数据库压力大时,动态增加数据的计算单元,服务器压力小时动态缩减tomcat的数量。
3. 容器分组,并且提供容器之间的负载均衡
K8S还支持容器间的负载均衡,通常在项目中做集群部署,大多使用Nginx做前置服务器分发请求,但是现在完全可以交给K8S去做负载均衡,因为K8S提供了容器间的负载均衡。
4. 实时监控,及时故障发现,自动替换
K8S支持实时监控,自动处理故障,当某个应用服务挂掉时,K8S会剔除掉对应服务并尝试自动重启服务。
Kubernetes安装:
三台机器同样配置:
首先关闭防火墙:
systemctl stop firewalld
setenforce 0
vim /etc/selinux/config
同步时间:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
配置主机名解析:
vim /etc/hosts
ssh免密操作:
ssh-keygen (一路回车)
ssh-copy-id 192.168.190.2 (要去免密的主机号)
安装docker:
上传或下载docker源,docekr-compose
mv docker-ce_aliyun.repo /etc/yum.repos.d/ (移动到源仓库)
yum -y install docekr-ce (下载docker-ce 商业版)
systemctl start docker
vim /etc/docker/daemon.json
systemctl restart docker (重启一下)
docker info (查看docker的信息)
出现这个就成功了!
docker-compose的使用:
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose (赋予权限)
kubernetes安装:
上传源:
mv kubernets.repo /etc/yum.repos.d/ (放到源仓库)
yum clean all && yum makecache (加载测试一下源)
free -m (查看分区)
swapoff -a (关闭分区)
vim /etc/fstab (为了防止重启后再次生效注释掉swap分区)
Kubernetes的配置文件:
vim /etc/sysctl.d/k8s.conf
查看是否成功:
然后重启一下docker,避免出现其他错误(仅个人认为)。
下载:
yum -y install kubelet-1.22.4 kubeadm-1.22.4 kubecrl-1.22.4 (下载)
systemctl start kubelet && systemctl enable kubelet (开启开机自启)
master结点配置:
kubeadm init \
--apiserver-advertise-address=192.168.190.66 \ (主节点的IP)
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.22.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
可以写个脚本去执行!
初始化后执行:
Node结点配置:
把master初始化后得到的最后两行代码复制到2个Node结点上:
在master上查看:
设置网络:
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml --no-check-certificate
等一会再查看一下nodes变成这样就成功了
基础使用:
docekr load -i sgrz.image (导入一些小游戏镜像,三台都导入)
查看是否成功:
运行:
kubectl run sgrz --image=sgrz:v1 --dry-run=client -oyaml > sgrz.yaml
运行后会出现一个.yaml的包 进入添加一行代码:
修改后运行:
kubectl apply -f sgrz.yaml
查看:
可以curl出来但是访问不到,因为是内网
用外网运行:
kubectl expose pod sgrz --port=6666 --protocol=TCP --target-port=80 --name=sgrz-svc --type=NodePort
查看:
访问:
删除:
删除后,清理一下缓存,就访问不到了
负载均衡:
kubectl create deployment sgrz-dp --image=sgrz:v1 --replicas=2 --dry-run=client -o yaml > sgrz-dp.yaml
得到.yaml包修改为:
运行:
查看:
如果使用 kubectl delete po (号) 删掉,是删不掉的它会以另一个号重新加入
然后访问: