[DAY7]从0开始装k8s(2)-k0s

k0s

k0s是Mirantis推出的轻量化Kubernetes发行版,Mirantis有一个k8s套件相当有名lens,这个後面会再简单介绍一下。

k0s主打三项特点

  • Zero Friction 零磨擦:主要是降低安装Kubernetes的难度,降低Kubernetes的入门门槛,不会光是安装就先死一片/images/emoticon/emoticon01.gif
  • Zero Deps 这个翻不出来QQ /images/emoticon/emoticon04.gif
    binary档安装,除了作业系统核心外,k0s对系统依赖性最少,而己适用於任何作业系统
  • Zero Cost 零成本:免费仔欢呼吧,它是完全免费,并且开源在github上面 k0s source

系统需求

硬体基本上1c2t的cpu就能支援,现在应该低标都是2c4t或是4c8t了吧,稳稳der,唯一缺点就是目前只支援

  • Linux : kernel v3.10 以上
  • windows server 2019 以上
    macos居然不支援.../images/emoticon/emoticon04.gif

手把手建立k0s single node Kubernetes cluster

下载k0s

curl -sSLf https://get.k0s.sh | sudo sh

执行结果

Downloading k0s from URL: https://github.com/k0sproject/k0s/releases/download/v1.21.4+k0s.0/k0s-v1.21.4+k0s.0-amd64
k0s is now executable in /usr/local/bin

安装k0s

安装参数可参考 configuration

sudo k0s install controller --single
INFO[2021-09-13 06:06:16] no config file given, using defaults
INFO[2021-09-13 06:06:16] creating user: etcd
INFO[2021-09-13 06:06:16] creating user: kube-apiserver
INFO[2021-09-13 06:06:16] creating user: konnectivity-server
INFO[2021-09-13 06:06:16] creating user: kube-scheduler
INFO[2021-09-13 06:06:16] Installing k0s service

测试是否安装成功

k0s version
v1.22.1+k0s.1

sudo k0s status
Version: v1.22.1+k0s.1
Process ID: 1275
Role: controller
Workloads: true

移除k0s

1.先停止k0s service
移除k0s需要sudo权限喔,不然会喷错误

k0s stop #会失败
Error: this command must be run as root
sudo k0s stop #成功

2.移除k0s相关资源,会移除k0s安装的system service, data directories, containers, mounts and network namespaces

sudo k0s reset
INFO[2021-09-13 06:11:07] no config file given, using defaults
INFO[2021-09-13 06:11:07] * remove k0s users step:
INFO[2021-09-13 06:11:07] no config file given, using defaults
INFO[2021-09-13 06:11:07] * uninstall service step
INFO[2021-09-13 06:11:07] Uninstalling the k0s service
INFO[2021-09-13 06:11:07] * remove directories step
INFO k0s cleanup operations done. To ensure a full reset, a node reboot is recommended.

3.最後重开机就完全移除掉k0s罗

kubectl

在k0s底下要执行kubectl的话,需要前面挂上sudo k0s

sudo k0s kubectl get pods -A
NAMESPACE     NAME                              READY   STATUS    RESTARTS   AGE
kube-system   kube-proxy-2kqmf                  1/1     Running   0          13m
kube-system   kube-router-kfvxm                 1/1     Running   0          13m
kube-system   coredns-5ccbdcc4c4-45s4w          1/1     Running   0          13m
kube-system   metrics-server-6bd95db5f4-pdprq   1/1     Running   0          13m

sudo k0s kubectl get nodes -A
NAME       STATUS   ROLES    AGE   VERSION
k0s-test   Ready    <none>   19m   v1.22.1+k0s

实作

安装好k0s之後,我们来测试看看是否能部署pod到k0s上面。
这边使用nginx container来测试

sudo k0s kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k0s-nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1 
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
EOF
sudo k0s kubectl get pods -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   kube-proxy-2kqmf                   1/1     Running   0          23m
kube-system   kube-router-kfvxm                  1/1     Running   0          23m
kube-system   coredns-5ccbdcc4c4-45s4w           1/1     Running   0          23m
kube-system   metrics-server-6bd95db5f4-pdprq    1/1     Running   0          23m
default       k0s-nginx-585449566-4cgzk          1/1     Running   0          9s

把k0s-nginx expose出去

sudo k0s kubectl expose deployment k0s-nginx --type=NodePort --port=80
service/k0s-nginx exposed

查看service,可以看到本机31180 port转到nginx 80 port

sudo k0s  kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        27m
k0s-nginx    NodePort    10.106.142.96   <none>        80:31180/TCP   44s

测试是否成功

curl 127.0.0.1:31180
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

k0s done /images/emoticon/emoticon34.gif


<<:  [Day15] CH10:排序大家族——气泡排序法

>>:  day 7 - grpc server 初始 proto测试

Swift 新手-如何使用 Xcode 建立专案?记得先更新作业系统!

Xcode 安装 首先,先确认电脑是否可以安装 Xcode,目前在写这篇文章时是 Xcode 12....

Day 04 - jS 微基础之ES6函式:function

function(函式)是将程序码包起来重复呼叫使用的object(物件),它使我们省下许多时间,为...

自动化测试,让你上班拥有一杯咖啡的时间 | Day 1 - 前言

此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 嗨!我是卯郁,去年就立志今年要参加...

抓取资料库数据 - SQL基础语法(下)

我们学会了单张表的查询与筛选,当资料需要跨表拉取时该怎麽办呢?这时候我们就需要用到JOIN来把表与表...

Day10 - 除噪模型

在 Day01 的时候我们有提到过资料可能会有杂讯、噪音,因此所使用的模型架构可以分为两个阶段:除噪...