5分钟入手容器云平台,k3s快速部署,小水枪主机也可以用来学习kubernetes使用

为什么需要k3s? k8s集群搭建费时费力,需要非常大的集群资源,运行环境还是有一定的门槛,那还学个锤子,成人的世界我全要。

废话不多说,下面我们来实际安装k3s入门容器编排的微服务。

首先需要下载三个资源,如下官方直通车

安装的脚本

1http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh 2

k3s主文件

1http://rancher-mirror.cnrancher.com/k3s/v1.17.5-k3s1/k3s 2

所需要的离线镜像

1http://rancher-mirror.cnrancher.com/k3s/v1.17.5-k3s1/k3s-airgap-images-amd64.tar 2

文件下载完以后,上传到服务器中/data/目录下

升级内核与安装docker请查看前面的博客

内核升级至4.20,docker安装18.6.03

1https://my.oschina.net/rootxxx/blog/3027744 2

下面开始安装mysql5.7,为什么安装mysql?相比ETCD更熟悉mysql

mysql配置文件

1mkdir -p /data/rancher_mysql && \ 2tee /data/rancher_mysql/mysqld.cnf <<-'EOF' 3[client] 4default-character-set=utf8 5 6[mysql] 7default-character-set=utf8 8 9[mysqld] 10symbolic-links=0 11pid-file = /var/run/mysqld/mysqld.pid 12socket = /var/run/mysqld/mysqld.sock 13datadir = /var/lib/mysql 14character-set-server=utf8 15collation-server=utf8_general_ci 16innodb_file_per_table=1 17max_connections=2048 18EOF 19

以docker方式运行mysql

1docker run -d \ 2--name rancher_mysql \ 3--restart=always \ 4-p 3306:3306 \ 5-v /data/rancher_mysql/data:/var/lib/mysql \ 6-v /data/rancher_mysql/log:/var/log/mysql \ 7-v /data/rancher_mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \ 8-v /etc/localtime:/etc/localtime:ro \ 9-e MYSQL_ROOT_PASSWORD=k3sroot \ 10mysql:5.7 && \ 11docker logs -f rancher_mysql 12

数据库运行完毕后,在mysql中创建用于保存集群信息的库.

create database k3s

导入离线镜像至docker中

docker load < /data/k3s-airgap-images-amd64.tar

创建k3s目录

1mkdir -p /data/k3s_dir && \ 2cp -rf /data/k3s /data/k3s_dir/k3s && \ 3chmod 775 /data/k3s_dir/k3s && \ 4chmod 775 /data/k3s-install.sh

设置参数

1export INSTALL_K3S_MIRROR=cn \ 2export INSTALL_K3S_SKIP_START=true && \ 3export INSTALL_K3S_BIN_DIR=/data/k3s_dir \ 4export INSTALL_K3S_SKIP_DOWNLOAD=true \ 5export INSTALL_K3S_VERSION=v1.17.5-k3s1 \ 6export INSTALL_K3S_EXEC='--docker'

安装服务

/data/k3s-install.sh --datastore-endpoint='mysql://root:k3sroot@tcp(127.0.0.1:3306)/k3s' && service k3s start

创建软连接,为了使用起来更接近k8s

ln -s /data/k3s_dir/k3s /bin/kubectl

输入命令验证集群

kubectl get nodes

返回

1NAME STATUS ROLES AGE VERSION 2192-168-100-153 Ready master 99s v1.17.5+k3s1

证明部署成功,下面我们来发布一个Nginx应用,发布至base命名空间 创建命名空间

kubectl create namespace base

部署应用

1kubectl apply -f - <<EOF 2#应用 3kind: Deployment 4apiVersion: apps/v1 5metadata: 6 #名称 7 name: snake-httpd-a 8 #命名空间 9 namespace: base 10spec: 11 # 12 selector: 13 matchLabels: 14 app: snake-httpd 15 ykb: web 16 version: a 17 #模板 18 template: 19 #数据描述[元数据] 20 metadata: 21 #标签 22 labels: 23 #应用 24 app: snake-httpd 25 ykb: web 26 version: a 27 #规格 28 spec: 29 #容器 30 containers: 31 #名称 32 - name: snake-httpd-a 33 #镜像 34 image: busybox 35 ports: 36 - name: http 37 containerPort: 80 38 #镜像挂载目录 39 volumeMounts: 40 - name: time 41 mountPath: /etc/localtime 42 command: ["/bin/sh","-c","echo 'this is snake-httpd-a' > /var/www/index.html; httpd -f -p 80 -h /var/www"] 43 #计算资源配置 44 resources: 45 #启动限制 46 requests: 47 #初始化CPU用量 48 cpu: "100m" 49 #初始化内存用量 50 memory: "128Mi" 51 #最大限制 52 limits: 53 #限制CPU最大用量 54 cpu: "100m" 55 #限制内存最大用量 56 memory: "128Mi" 57 #实际目录挂载 58 volumes: 59 #宿主机时间文件 60 - name: time 61 hostPath: 62 path: /etc/localtime 63--- 64#服务 65kind: Service 66apiVersion: v1 67#数据描述[元数据] 68metadata: 69 #名称 70 name: snake-httpd-a 71 #命名空间 72 namespace: base 73#规格 74spec: 75 #容器 76 selector: 77 #应用 78 app: snake-httpd 79 #对应的应用版本 80 version: a 81 #端口 82 ports: 83 #名称 84 - name: http 85 #协议 86 protocol: TCP 87 #对外开放端口 88 port: 14000 89 #容器开放端口 90 targetPort: 80 91 #类型 92 type: ClusterIP 93 #对外开放的IP地址 94 externalIPs: [192.168.100.153] 95EOF

查看pod与svc运行状态

1kubectl get pods -n base 2 3NAME READY STATUS RESTARTS AGE 4snake-httpd-a-7bc8b96c8d-jjx2w 1/1 Running 0 13s 5 6kubectl get svc -n base 7 8NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 9snake-httpd-a ClusterIP 10.43.141.221 192.168.100.153 14000/TCP 82s

集群外部访问

1http://192.168.100.153:14000/ 2 3#返回 4this is snake-httpd-a

集群内部访问

1#部署一个客户端 2kubectl apply -f - <<EOF 3#应用 4kind: Deployment 5apiVersion: apps/v1 6metadata: 7 #名称 8 name: snake-httpd-client 9 #命名空间 10 namespace: base 11spec: 12 # 13 selector: 14 matchLabels: 15 app: snake-httpd-client 16 #模板 17 template: 18 #数据描述[元数据] 19 metadata: 20 #标签 21 labels: 22 #应用 23 app: snake-httpd-client 24 #规格 25 spec: 26 #容器 27 containers: 28 #名称 29 - name: snake-httpd-client 30 #镜像 31 image: busybox 32 #镜像挂载目录 33 volumeMounts: 34 - name: time 35 mountPath: /etc/localtime 36 #以终端方式运行 37 tty: true 38 #计算资源配置 39 resources: 40 #启动限制 41 requests: 42 #初始化CPU用量 43 cpu: "100m" 44 #初始化内存用量 45 memory: "128Mi" 46 #最大限制 47 limits: 48 #限制CPU最大用量 49 cpu: "100m" 50 #限制内存最大用量 51 memory: "128Mi" 52 #实际目录挂载 53 volumes: 54 #宿主机时间文件 55 - name: time 56 hostPath: 57 path: /etc/localtime 58EOF 59 60#查看客户端pod名称 61 62kubectl get pods -n base 63 64NAME READY STATUS RESTARTS AGE 65snake-httpd-a-7bc8b96c8d-jjx2w 1/1 Running 0 11m 66snake-httpd-client-5f9bf9bfd6-rnnqp 1/1 Running 0 75s 67 68#登陆客户端 69kubectl exec -it snake-httpd-client-5f9bf9bfd6-rnnqp -n base /bin/sh 70 71#用wget 发起请求,直接采用svc名称即可,无需注册中心,和外部访问一样,内部访问同样返回this is snake-httpd-a 72wget -q -O - http://snake-httpd-a.base:14000 73 74#k8s中采用的DNS提供服务发现,与服务通信直接使用服务名称即可 75#http://{服务名}.{命名空间}:{端口} 76

内存占用情况

1[root@192-168-100-153 /]# free -m 2 total used free shared buff/cache available 3Mem: 3944 944 824 9 2175 2764 4Swap: 0 0 0
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

5分钟入手容器云平台,k3s快速部署,小水枪主机也可以用来学习kubernetes使用 - HelloWorld