记录日期:2021.9.28
Linux版本:centos7.9
去网上搜索看了下的很多单机部署教程、坑太多了。。。所以自己花了1天时间部署了k8s以及安装了tomcat进行测试,成功了,记录一下过程,希望能帮到有用的同学
2021.11.09中午笔记...(刚进了新公司,在自己3天的努力下,测试环境的三主三从高可用版本,目前已经搭建完毕(期间不知道踩了多少坑...),接下来就是生产环境啦,博客准备更新k8s-1.20.12 稳定版本教程,最新版本为1.22,因为公司要求与阿里云稳定版本保持一致,所以没弄最新版。)
有问题可以博客留言
一、准备工作
1、关闭selinux安装机制
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
2、关闭防火墙
setenforce 0
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
二、安装kubernetes和etcd
1、yum下载
yum install etcd kubernetes -y
安装好后会把etcd、docker、kube-apiserver、kube-controller-manager、kube-scheduler、kubelet和kube-proxy都安装好,接下来直接启动
2、修改配置文件
修改红色字体部分即可
[root@test2 kubernetes]# cat /etc/kubernetes/apiserver ### # kubernetes system config # # The following values are used to configure the kube-apiserver # # The address on the local server to listen to. KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" #127.0.0.1改成0.0.0.0 # The port on the local server to listen on. # KUBE_API_PORT="--port=8080" # Port minions listen on # KUBELET_PORT="--kubelet-port=10250" # Comma separated list of nodes in the etcd cluster KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379" # Address range to use for services KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" # default admission control policies KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota" # Add your own! KUBE_API_ARGS=""
3、启动
systemctl start etcd systemctl start docker systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy
4、基本命令操作
kubectl version #查看版本
kubectl cluster-info #查看集群的状态信息
kubectl get pods #查看pod,这里是因为我部署了个tomcat,所以是有数据的,后面会讲到怎么部署tomcat
kubectl get nodes #查看集群有几个node,部署的是单节点,所以只有一个node
三、部署tomcat
k8s部署tomcat需要两个配置文件,准备tomcat-rc.yaml和tomcat-svc.yaml,文件放任意位置都可以
1、tomcat-rc.yaml
[root@test2 kubernetes]# cat tomcat-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: tomcat-demo #调度对象的全称,全局唯一 spec: replicas: 1 #表示创建1个pod副本数量 selector: app: tomcat-demo template: metadata: labels: app: tomcat-demo #pod拥有的标签 spec: containers: - name: tomcat-demo image: tomcat #对应的从docker拉取的镜像名称 ports: - containerPort: 8080 #tomcat容器端口
2、 tomcat-svc.yaml
[root@test2 kubernetes]# cat tomcat-svc.yaml apiVersion: v1 kind: Service metadata: name: tomcat-demo spec: type: NodePort ports: - port: 8080 nodePort: 30001 #tomcat对外的端口(浏览器访问的端口) selector: app: tomcat-demo
3、执行以下命令,进行部署
kubectl create -f mysql-rc.yaml
kubectl create -f mysql-svc.yaml
查看rc和svc
查看pod
注意这里READY第一次部署会为0/1,STATUS状态会为containerCreating
解决办法,执行一下
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
顺利的话,能够下载到如下images
然后再删除掉rc和svc,重新create就可以
kubectl delete -f mysql-rc.yaml kubectl delete -f mysql-svc.yaml kubectl create -f mysql-rc.yaml kubectl create -f mysql-svc.yaml
再次查看就正常了
访问浏览器http://IP:30001/ 会出现404,不过别慌,原因是tomcat的webapps目录下没东西导致的
用docker ps查看我们k8s启动的docker服务
进入容器,操作一波
我们可以看到webapps下是没有东西的,webapps.dist是有的
把webapps删掉,把webapps.dist改成webapps就可以了
访问一下网页,成功啦,哈哈