Kuberbetes – k8s 集群搭建辅助项目

  • 一键搭建集群(开发人员使用)
  • 一步一步搭建(专业运维人员使用)

搭建集群

因为电脑内存小就搭建两台

搭建K1

环境部署

在这里插入图片描述

给文件添加执行权限
chmod +x ./ezdown
执行kubeasz 项目提供的脚本文件,下载离线文件,并安装docker
./ezdown -D
导入镜像(用于测试K8S)
docker load -i images.gz

启动工作节点

克隆K2

主服务器上执行

启动临时容器
./ezdown -S
修改配置文件,安装方式改为离线安装
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/kubeasz/example/config.yml 

设置192工作节点免密登录
ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa

ssh-copy-id 192.168.64.191

ssh-copy-id 192.168.64.192
创建集群配置方案
cd /etc/kubeasz

chmod +x ezctl
# 新建方案
./ezctl new cs1
修改文件新建的host文件

在这里插入图片描述

执行一键安装脚本
cd /etc/kubeasz

./ezctl setup cs1 all

K8s配置

Pod

是K8S的容器,是对docker容器的封装对象,通过Pod对底层容器化 技术进行解耦

控制器

自动部署容器的工具

ReplicationController

RC可以自动化维护多个pod,只需指定pod副本的数量,就可以轻松实现自动扩容缩容

当一个pod宕机,RC可以自动关闭pod,并启动一个新的pod替代它

cat <<EOF > kubia-rc.yml
apiVersion: v1
kind: ReplicationController        # 资源类型
metadata:   
  name: kubia                      # 为RC命名
spec:
  replicas: 3                      # pod副本的数量
  selector:                        # 选择器,用来选择RC管理的pod
    app: kubia                     # 选择标签'app=kubia'的pod,由当前RC进行管理
  template:                        # pod模板,用来创建新的pod
    metadata:
      labels:
        app: kubia                 # 指定pod的标签
    spec:
      containers:                  # 容器配置
      - name: kubia                # 容器名
        image: luksa/kubia         # 镜像
        imagePullPolicy: Never
        ports:
        - containerPort: 8080      # 容器暴露的端口
EOF

创建RC控制器

k create -f kubia-rc.yml
ReplicaSet

提供了丰富的pod 选择器,一后使用RS老项目使用RC
在控制台使用时需要将cat命令去掉

cat <<EOF > kubia-replicaset.yml
apiVersion: apps/v1              # RS 是 apps/v1中提供的资源类型
kind: ReplicaSet                 # 资源类型
metadata:
  name: kubia                    # RS 命名为 kubia
spec:
  replicas: 3                    # pod 副本数量
  selector:
    matchLabels:                 # 使用 label 选择器
      app: kubia                 # 选取标签是 "app=kubia" 的pod
  template:
    metadata:
      labels:
        app: kubia               # 为创建的pod添加标签 "app=kubia"
    spec:
      containers:
      - name: kubia              # 容器名
        image: luksa/kubia       # 镜像
        imagePullPolicy: Never
EOF

创建RS

k create -f kubia-replicaset.yml
DaemonSet

在每个服务器上部署一个例如监控


cat <<EOF > ssd-monitor-daemonset.yml
apiVersion: apps/v1
kind: DaemonSet                       # 资源类型
metadata:
  name: ssd-monitor                   # DS资源命名
spec:
  selector:
    matchLabels:                      # 标签匹配器
      app: ssd-monitor                # 匹配的标签
  template:
    metadata:
      labels:
        app: ssd-monitor              # 创建pod时,添加标签
    spec:
      containers:                     # 容器配置
        - name: main                  # 容器命名
          image: luksa/ssd-monitor    # 镜像
          imagePullPolicy: Never
EOF


创建

k create -f ssd-monitor-daemonset.yml
job

控制单次运行的应用

Cronjob

定时和重复执行的任务

cron时间表格式:
“分钟 小时 每月的第几天 月 星期几”

cat <<EOF > cronjob.yml
apiVersion: batch/v1beta1                # api版本
kind: CronJob                            # 资源类型
metadata:
  name: batch-job-every-fifteen-minutes
spec:
  # 0,15,30,45  - 分钟
  # 第一个*  -  每个小时
  # 第二个*  -  每月的每一天
  # 第三个*  -  每月
  # 第四个*  -  每一周中的每一天
  schedule: "0,15,30,45 * * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: periodic-batch-job
        spec:
          restartPolicy: OnFailure
          containers: 
          - name: main
            image: luksa/batch-job
            imagePullPolicy: Never
EOF

标签选择器

标签样式 k1=v1
通过标签指定控制器和容器的关联

Service

用来访问容器的入口

回话亲和性

来自同一个客户端的请求,总是发给同一个pod

cat <<EOF > kubia-svc-clientip.yml
apiVersion: v1
kind: Service
metadata:
  name: kubia-clientip
spec:
  sessionAffinity: ClientIP        # 回话亲和性使用ClientIP
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: kubia
EOF

endpoint

endpoint是在Service和pod之间的一种资源
不含pod选择器的服务,不会创建 endpoint
创建endpoint关联到Service,它的名字必须与Service同名

通过外部系统域名来访问
cat <<EOF > external-service-externalname.yml
apiVersion: v1
kind: Service
metadata:
  name: external-service-externalname
spec:
  type: ExternalName
  externalName: www.chinaunicom.com.cn      # 域名
  ports:
  - port: 80
EOF

标签选择器

通过标签指定Service和容器的关联,转发调用时在选中的容器间调用

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐