記錄日期: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就可以了
訪問一下網頁,成功啦,哈哈