我想看看目前是否可以在 2020 M1 MacBook air 上本地运行 Kubernetes。
我需要的环境比较简单,只是为了看一些教程。举个例子,这个操作符-sdk 指南。
到目前为止,我已经尝试过microk8s和minikube,因为它们是我之前在其他机器上使用过的工具。
对于这两个,我brew在打开终端应用程序“with Rosetta 2”(即像这样)后安装了它们。我的进度是:
Minikube
当我运行时minikube start --driver=docker(已经安装了Docker Desktop for M1的技术预览版),出现初始化错误。在我看来,这里正在跟踪https://github.com/kubernetes/minikube/issues/9224。
Microk8s
microk8s install要求安装multipass,然后出现错误An error occurred with the instance when trying to start with 'multipass': returned exit code 2. Ensure that 'multipass' is setup correctly and try again.。Multipass 显示microk8s-vm卡在启动中。我认为这可能与这个问题有关https://github.com/canonical/multipass/issues/1857。
我知道我可能会更好地追查这些问题以寻求有关这些特定错误的帮助。如果目前可以/建议设置基本的 Kubernetes 环境以在 M1 mac …
我有一个应用程序,它可以在旧 Mac 上在物理设备和 iOS 模拟器中使用 Intel 处理器编译并运行良好。
同一个应用程序也可以在带有 M1 处理器的较新 Apple Silicon Mac 和物理 iPhone 设备上编译并运行良好,但是,它拒绝为 iOS 模拟器编译。
如果没有模拟器支持,调试周转时间会变得很长,所以我试图解决这个问题。更不用说 Xcode 预览功能也不起作用,这很烦人。
我在没有进行任何更改(但从 Intel Mac 移至 M1 Mac)的情况下遇到的第一个错误如下所示。
building for iOS Simulator, but linking in dylib built for iOS, file '/Users/andy/workspace/app/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' for architecture arm64
我使用的 Cocoapods 库是 GoogleWebRTC,根据它的文档,应该支持 arm64,所以我很困惑为什么会抛出上述错误。正如我之前所说,它在我认为在 arm64 上运行的真实设备中编译得很好。
根据文档..
这个 pod 包含二进制形式的 WebRTC iOS SDK。它是一个包含 armv7、arm64 和 x86_64 切片的动态库。不支持位码。我们当前提供的 API 仅适用于 Objective C。
我在网上搜索,似乎有两种解决方法可以解决此问题。
arm64到Excluded ArchitecturesBuild Active …我真的厌倦了为 Xcode 手动检查此选项,由于它的大小,我无法复制该选项...也许有一种方法可以创建某种快捷方式来启动应用程序(在我的情况下为 Xcode),其具体值为“使用Rosetta 打开”?
注意:此问题仅与 Apple Silicon Mac 相关。
这里是 的完整日志pip3 install lightgbm==3.3.3。
me % pip3 install lightgbm==3.3.3\nCollecting lightgbm==3.3.3\n Using cached lightgbm-3.3.3.tar.gz (1.5 MB)\n Preparing metadata (setup.py) ... done\nRequirement already satisfied: wheel in /opt/homebrew/lib/python3.10/site-packages (from lightgbm==3.3.3) (0.37.1)\nCollecting numpy\n Using cached numpy-1.23.5-cp310-cp310-macosx_11_0_arm64.whl (13.4 MB)\nCollecting scipy\n Using cached scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl (28.5 MB)\nCollecting scikit-learn!=0.22.0\n Downloading scikit_learn-1.1.3-cp310-cp310-macosx_12_0_arm64.whl (7.7 MB)\n \xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81 7.7/7.7 MB 4.7 MB/s eta 0:00:00\nCollecting threadpoolctl>=2.0.0\n Downloading threadpoolctl-3.1.0-py3-none-any.whl (14 kB)\nCollecting joblib>=1.0.0\n Using cached joblib-1.2.0-py3-none-any.whl (297 kB)\nBuilding wheels for collected packages: lightgbm\n Building wheel for lightgbm (setup.py) ... error\n error: subprocess-exited-with-error\n …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 C 应用程序:
#include <stdio.h>
int main() {
printf("Hello, world!\n");
}
Run Code Online (Sandbox Code Playgroud)
当我:
最终的二进制文件无法执行,并根据 shell 报告为“已终止”:
% rm hello
# arch simulates the build system which is still compiled for x86_64
% arch -x86_64 cc -arch arm64 hello.c -o hello
% ./hello
Hello, world!
% arch -x86_64 cc -arch arm64 hello.c -o hello
% ./hello
zsh: killed ./hello
Run Code Online (Sandbox Code Playgroud)
如果我的构建系统是原生 arm64(或 arm64e),那么没有问题:
% rm hello
% arch -arm64e cc -arch arm64 hello.c …Run Code Online (Sandbox Code Playgroud) 在我以前的基于 Intel 的 Mac 上,我曾经包含
export ARCHFLAGS="-arch x86_64"
Run Code Online (Sandbox Code Playgroud)
在我的 shell 资源文件中。新的基于 ARM 的 Apple 芯片上的正确编译标志是什么?arm?arm64?arm-64?arm_64?似乎还没有很多资源,非常感谢任何指点!
在 M1 MacBook Pro 的模拟器上运行我的 React Native 项目。ScrollViews 在模拟器中不能正确滚动。Big Sur 和 M1 的这个设置只有一个问题。适用于其他计算机和真实设备。
当我滑动时,视图会滚动,但它需要很大的“力”,并且视图在我滚动时似乎滞后。此外,它会在我松开按钮时立即停止(不会按预期继续滚动)。
还有其他人遇到这个问题吗?
设置:
我正在尝试使用Ansiblefacts来查找机器的架构。
\n我们可以通过运行命令来收集有关机器的信息ansible -m setup <host-name>,如文档中所述:发现变量:事实和魔术变量 \xe2\x80\x94 Ansible 文档。
但看起来 和ansible_architecture是ansible_machine相同的值。我不确定它们之间的区别。上述文档中的示例显示了以下两个具有相同值的值:
"ansible_architecture": "x86_64",\n "ansible_machine": "x86_64",\nRun Code Online (Sandbox Code Playgroud)\n在我的 M1 MacBook 上,结果是这样的:
\nshuuji3@momo mac-dev-playbook\n> ansible -m setup localhost | egrep \'_architecture|_machine\'\n "ansible_architecture": "arm64",\n "ansible_machine": "arm64",\nRun Code Online (Sandbox Code Playgroud)\n我们可以互换使用这些值吗?或者在另一种情况下它们可以有其他值吗?
\n我正在构建我的命令行应用程序,并注意到我创建的所有二进制文件都是类型arm64。
但是,macOS 11.4 附带的所有 bin 都是arm64e.
file即在 M1 MacBook 上构建的应用程序上运行显示:
Mach-O 64-bit executable arm64
xxd然而,在同一台计算机上的系统应用程序上运行文件显示:
Mach-O 64-bit executable arm64e
我查看了 Xcode,但看不到如何增强此功能,难道 Xcode 不应该构建吗arm64e?如果是这样我怎样才能达到同样的目的?
编辑:我认为答案可能是,arm64e ABI 不稳定,除了 Apple 之外没有人使用?
已经提到,当在 M1 Mac 上使用 x86_64 Docker 镜像时,当没有可用的 ARM64 镜像时,该容器将在qemu仿真下启动以实现兼容性。(以性能为代价。)
很多时候,当我运行一组容器(以及针对该批次的集成测试)时,我会看到qemu-system-aarch64一些核心。
我的问题:对于给定的运行容器列表(即docker ps),我如何确定哪些是本机运行的,哪些是被模拟的?
apple-silicon ×10
macos ×6
xcode ×3
apple-m1 ×2
ios ×2
ansible ×1
cocoa-touch ×1
docker ×1
kubernetes ×1
microk8s ×1
minikube ×1
native ×1
numpy ×1
pip ×1
python ×1
qemu ×1
react-native ×1
shell ×1
swift ×1