乘风破浪,遇见云原生(Cloud Native)之Docker Desktop for Windows 快捷开启内置Kubernetes(K8S) v1.25 本地研发环境

前言

之前通过关于Kubernetes(简称K8S)的开启及基本使用,基于Docker Desktop & WSL2已经介绍过基于AliyunContainerService/k8s-for-docker-desktop项目如何启用Kubernetes的过程,但是他们跟进新版本没有Docker Desktop这么及时,这次我们直接通过Docker Desktop内置的模块来启用本地的Kubernetes环境。

image

Kubernetes v1.25

2022年8月23日,Kubernetes v1.25正式发布。

image

移除PodSecurityPolicy;PodSecurityAdmission成长为Stable

PodSecurityPolicy是在1.21版本中被弃用,到1.25版本被移除。因为提升其可用性的变更会带来破坏性的变化,所以有必要将其删除,以支持一个更友好的替代品。这个替代品就是PodSecurityAdmission,它在这个版本里成长为Stable。如果你最近依赖于PodSecurityPolicy,请参考PodSecurityAdmission迁移说明

Ephemeral Containers成长为Stable

临时容器是在现有的Pod中存在有限时间的容器。当你需要检查另一个容器,但因为该容器已经崩溃或其镜像缺乏调试工具不能使用kubectl exec时,它对故障排除特别有用。临时容器在Kubernetes v1.23中成长为Beta,并在这个版本中,该功能成长为Stable。

对cgroupsv2的支持进入Stable阶段

自Linux内核cgroups v2 API宣布稳定以来,已经有两年多的时间了。随着一些发行版现在默认使用该API,Kubernetes必须支持它以继续在这些发行版上运行。cgroups v2比cgroups v1提供了一些改进,更多信息参见cgroups v2文档。虽然cgroups v1将继续受到支持,但这一改进使我们能够为其最终的废弃和替代做好准备。

改善对Windows系统的支持

  • 性能仪表板增加了对Windows系统的支持
  • 单元测试增加了对Windows系统的支持
  • 一致性测试增加了对Windows系统的支持
  • 为Windows Operational Readiness创建了新的GitHub仓库

将容器注册服务从k8s.gcr.io迁移至registry.k8s.io

将容器注册服务从k8s.gcr.io迁移至registry.k8s.io的PR已经被合并。更多细节参考wiki页面,同时公告已发送到kubernetes开发邮件列表。

SeccompDefault升级为Beta

SeccompDefault升级为Beta,更多细节参考教程用seccomp限制一个容器的系统调用

网络策略中endPort升级为Stable

网络策略中的endPort已经迎来GA正式发布。支持endPort字段的网络策略提供程序现在可使用该字段来指定端口范围,应用网络策略。在之前的版本中,每个网络策略只能指向单一端口。

请注意,网络策略提供程序必须支持endPort字段。如果提供程序不支持endPort,又在网络策略中指定了此字段,则会创建出仅覆盖端口字段(单端口)的网络策略。

本地临时容器存储容量隔离升级为Stable

本地临时存储容量隔离功能已经迎来GA正式发布版本。该功能在1.8版中作为alpha版本引入,在1.10中升级为beta,现在终于成为了稳定功能。它提供了对Pod之间本地临时存储容量隔离的支持,如EmptyDir,因此,如果一个Pod对本地临时存储容量的消耗超过该限制,就可以通过驱逐Pod来硬性限制其对共享资源的消耗。

核心CSI迁移为稳定版

CSI迁移是SIGStorage在之前多个版本中做出的持续努力。目标是将树内数据卷插件转移到树外CSI驱动程序并最终移除树内数据卷插件。此次核心CSI迁移已迎来GA。同样,GCEPD和AWSEBS的CSI迁移也进入GA阶段。vSphere的CSI迁移仍为beta(但也默认启用)。Portworx的CSI迁移同样处于beta阶段(但默认不启用)。

CSI临时数据卷升级为稳定版

CSI临时数据卷功能允许在临时使用的情况下在Pod里直接指定CSI数据卷。因此可以直接用它们在使用挂载卷的Pod内注入任意状态,如配置、秘密、身份、变量或类似信息。这个功能最初是作为alpha功能在1.15版本中引入,现在已升级为GA通用版。某些CSI驱动程序会使用此功能,例如存储密码的CSI驱动程序。

CRD验证表达式语言升级为Beta

CRD验证表达式语言已升级为beta版本,这使得声明如何使用通用表达式语言(CEL)验证自定义资源成为可能。请参考验证规则指导。

服务器端未知字段验证升级为Beta

ServerSideFieldValidation特性门控已升级为beta(默认开启)。它允许在检测到未知字段时,有选择地触发API服务器上的模式验证机制。因此这允许从kubectl中移除客户端验证的同时保持相同的核心功能,即对包含未知或无效字段的请求进行错误处理。

引入KMS v2 API

引入KMS v2 alpha1 API以提升性能,实现轮替与可观察性改进。此API使用AES-GCM替代了AES-CBC,通过DEK实现静态数据(即KubernetesSecrets)加密。过程中无需额外用户操作,而且仍然支持通过AES-GCM和AES-CBC进行读取。更多信息参考使用KMSprovider进行数据加密指南

Kube-proxy镜像当前基于无发行版镜像

在以前的版本中,kube-proxy的容器镜像是以Debian作为基础镜像构建的。从这个版本开始,其镜像现在使用distroless来构建。这一改变将镜像的大小减少了近50%,并将安装的软件包和文件的数量减少到只有kube-proxy工作所需的那些。

Docker Desktop版本

image

配置镜像站(加速)

可以通过Aliyun账号弄一个国内镜像加速器地址,https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

image

打开Docker Desktop设置界面的Docker Engine接口,在registry-mirrors节点下增加国内加速的节点。

{
    "builder": {
        "gc": {
            "defaultKeepStorage": "20GB",
            "enabled": true
        }
    },
    "debug": false,
    "experimental": false,
    "features": {
        "buildkit": true
    },
    "insecure-registries": [],
    "registry-mirrors": [
        "https://xxxx.mirror.aliyuncs.com"
    ]
}

点击Apply & Restart按钮生效。

整理镜像库

将本地的镜像库做个清理,只保留那些In Use的。

image

开启Kubernetes

再次前往设置界面,这次找到左侧Kubernetes设置项,勾选复选框的Enable Kubernetes,点击Apply & Restart按钮生效。

image

这时候左下角会出现一个黄色的Kubernetes的状态条,等待它变绿了就是准备好了。

image

不到半个小时就搞定了,还是挺快的。

image

验证安装

查看Kubernetes版本

kubectl version

image

查看Kubernetes集群

kubectl cluster-info

image

查看Kubernetes节点

kubectl get nodes

image

相关镜像

image

docker images
hubproxy.docker.internal:5000/docker/desktop-kubernetes   kubernetes-v1.25.0-cni-v1.1.1-critools-v1.24.2-cri-dockerd-v0.2.5-1-debian   2042e761d17a   6 weeks ago     363MB
k8s.gcr.io/kube-apiserver                                 v1.25.0                                                                      4d2edfd10d3e   6 weeks ago     128MB
k8s.gcr.io/kube-controller-manager                        v1.25.0                                                                      1a54c86c03a6   6 weeks ago     117MB
k8s.gcr.io/kube-scheduler                                 v1.25.0                                                                      bef2cf311509   6 weeks ago     50.6MB
k8s.gcr.io/kube-proxy                                     v1.25.0                                                                      58a9a0c6d96f   6 weeks ago     61.7MB
k8s.gcr.io/pause                                          3.8                                                                          4873874c08ef   3 months ago    711kB
k8s.gcr.io/etcd                                           3.5.4-0                                                                      a8a176a5d5d6   4 months ago    300MB
k8s.gcr.io/coredns                                        v1.9.3                                                                       5185b96f0bec   4 months ago    48.8MB
docker/desktop-vpnkit-controller                          v2.0                                                                         8c2c38aa676e   17 months ago   21MB
docker/desktop-storage-provisioner                        v2.0                                                                         99f89471f470   17 months ago   41.9MB

参考

posted @ 2022-10-09 23:17  TaylorShi  阅读(422)  评论(0编辑  收藏  举报