centos7.9 k8s單節點部署(2021.9)


記錄日期:2021.9.28

Linux版本:centos7.9

去網上搜索看了下的很多單機部署教程、坑太多了。。。所以自己花了1天時間部署了k8s以及安裝了tomcat進行測試,成功了,記錄一下過程,希望能幫到有用的同學

2021.11.09中午筆記...(剛進了新公司,在自己3天的努力下,測試環境的三主三從高可用版本,目前已經搭建完畢(期間不知道踩了多少坑...),接下來就是生產環境啦,博客准備更新k8s-1.20.12 穩定版本教程,最新版本為1.22,因為公司要求與阿里雲穩定版本保持一致,所以沒弄最新版。)

有問題可以博客留言

一、准備工作

1、關閉selinux安裝機制

 [root@ip-172-10-0-107 ec2-user]# cat /etc/selinux/config

# 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就可以了

 

 訪問一下網頁,成功啦,哈哈

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM