k8s_loong64
版本
k8s: 1.20.11
golang: go1.19 loong64
不支持的架构
!!! [0509 06:19:40] Unsupported host arch. Must be x86_64, 386, arm, arm64, s390x or ppc64le.
!!! [0509 06:19:45] Unsupported host arch. Must be x86_64, 386, arm, arm64, s390x or ppc64le.
修改hack/lib/golang.sh文件
- KUBE_SUPPORTED_SERVER_PLATFORMS
- KUBE_SUPPORTED_NODE_PLATFORMS
- KUBE_SUPPORTED_CLIENT_PLATFORMS
- KUBE_SUPPORTED_TEST_PLATFORMS
添加上linux/loong64
修改hack/lib/util.sh
在kube::util::host_arch() 里添加
loongarch64*)
host_arch=loongarch64
;;
修改hack/local-up-cluster.sh文件
loongarch64*)
host_arch=loongarch64
;;
修改code-generator
+++ [0509 06:58:10] Building go targets for linux/loong64:
./vendor/k8s.io/code-generator/cmd/prerelease-lifecycle-gen
find: 'rsync': No such file or directory
find: 'rsync': No such file or directory
Generating prerelease lifecycle code for 27 targets
修改ginko
报错内容
# k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/internal/remote
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go:42:2: undefined: syscallDup
vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go:43:2: undefined: syscallDup
修改vendor/github.com/onsi/ginkgo/internal/remote/syscall_dup_unix.go
// +build !linux !arm64
// +build !linux !riscv64
// +build !linux !loong64
// +build !windows
// +build !solaris
拷贝 vendor/github.com/onsi/ginkgo/internal/remote/syscall_dup_linux_arm64.go
为syscall_dup_linux_loong64.go
并修改
// +build linux,loong64
替换sys/unix
报错内容
# k8s.io/kubernetes/vendor/golang.org/x/sys/unix
vendor/golang.org/x/sys/unix/affinity_linux.go:14:35: undefined: _NCPUBITS
vendor/golang.org/x/sys/unix/affinity_linux.go:17:25: undefined: cpuMask
vendor/golang.org/x/sys/unix/affinity_linux.go:50:27: undefined: cpuMask
vendor/golang.org/x/sys/unix/sockcmsg_unix.go:33:9: undefined: Cmsghdr
vendor/golang.org/x/sys/unix/ztypes_linux.go:22:11: undefined: Timespec
vendor/golang.org/x/sys/unix/ztypes_linux.go:23:11: undefined: Timespec
vendor/golang.org/x/sys/unix/ztypes_linux.go:1112:12: undefined: SockaddrStorage
vendor/golang.org/x/sys/unix/ztypes_linux.go:2284:8: undefined: Timespec
vendor/golang.org/x/sys/unix/ztypes_linux.go:2748:8: undefined: TIPCSubscr
vendor/golang.org/x/sys/unix/ztypes_linux.go:2968:10: undefined: PPSKInfo
vendor/golang.org/x/sys/unix/affinity_linux.go:50:27: too many errors
go install golang.org/x/sys@latest
cp -r ${GOPATH}/pkg/mod/golang.org/x/sys@{latest}/unix vendor/golang.org/x/sys/
替换net/internal/socket net/ipv4 net/ipv6
报错内容
# k8s.io/kubernetes/vendor/golang.org/x/net/internal/socket
vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go:11:17: undefined: mmsghdr
vendor/golang.org/x/net/internal/socket/cmsghdr.go:9:10: undefined: cmsghdr
vendor/golang.org/x/net/internal/socket/cmsghdr.go:10:10: undefined: cmsghdr
vendor/golang.org/x/net/internal/socket/cmsghdr.go:11:10: undefined: cmsghdr
vendor/golang.org/x/net/internal/socket/msghdr_linux.go:9:10: undefined: msghdr
vendor/golang.org/x/net/internal/socket/msghdr_linux.go:9:28: undefined: iovec
vendor/golang.org/x/net/internal/socket/msghdr_linux.go:23:10: undefined: msghdr
vendor/golang.org/x/net/internal/socket/msghdr_linux.go:30:10: undefined: msghdr
vendor/golang.org/x/net/internal/socket/msghdr_linux.go:34:10: undefined: msghdr
vendor/golang.org/x/net/internal/socket/sys_linux.go:14:31: undefined: mmsghdr
vendor/golang.org/x/net/internal/socket/sys_linux.go:14:31: too many errors
# k8s.io/kubernetes/vendor/golang.org/x/net/ipv4
vendor/golang.org/x/net/ipv4/icmp.go:34:2: undefined: icmpFilter
vendor/golang.org/x/net/ipv4/icmp_linux.go:7:10: undefined: icmpFilter
vendor/golang.org/x/net/ipv4/icmp_linux.go:11:10: undefined: icmpFilter
vendor/golang.org/x/net/ipv4/icmp_linux.go:15:10: undefined: icmpFilter
vendor/golang.org/x/net/ipv4/icmp_linux.go:23:10: undefined: icmpFilter
vendor/golang.org/x/net/ipv4/sys_linux.go:19:19: undefined: sysIP_TTL
vendor/golang.org/x/net/ipv4/sys_linux.go:20:19: undefined: sysIP_PKTINFO
vendor/golang.org/x/net/ipv4/sys_linux.go:20:34: undefined: sizeofInetPktinfo
vendor/golang.org/x/net/ipv4/sys_linux.go:24:79: undefined: sysIP_TOS
vendor/golang.org/x/net/ipv4/sys_linux.go:25:79: undefined: sysIP_TTL
vendor/golang.org/x/net/ipv4/sys_linux.go:25:79: too many errors
# k8s.io/kubernetes/vendor/golang.org/x/net/ipv6
vendor/golang.org/x/net/ipv6/icmp.go:37:2: undefined: icmpv6Filter
vendor/golang.org/x/net/ipv6/icmp_linux.go:7:10: undefined: icmpv6Filter
vendor/golang.org/x/net/ipv6/icmp_linux.go:11:10: undefined: icmpv6Filter
vendor/golang.org/x/net/ipv6/icmp_linux.go:15:10: undefined: icmpv6Filter
vendor/golang.org/x/net/ipv6/icmp_linux.go:25:10: undefined: icmpv6Filter
vendor/golang.org/x/net/ipv6/sys_linux.go:19:21: undefined: sysIPV6_TCLASS
vendor/golang.org/x/net/ipv6/sys_linux.go:20:21: undefined: sysIPV6_HOPLIMIT
vendor/golang.org/x/net/ipv6/sys_linux.go:21:21: undefined: sysIPV6_PKTINFO
vendor/golang.org/x/net/ipv6/sys_linux.go:21:38: undefined: sizeofInet6Pktinfo
vendor/golang.org/x/net/ipv6/sys_linux.go:22:21: undefined: sysIPV6_PATHMTU
vendor/golang.org/x/net/ipv6/sys_linux.go:22:21: too many errors
go install golang.org/x/net@latest
cp -r ${GOPATH}/pkg/mod/golang.org/x/net@{latest}/internal/socket vendor/golang.org/x/net/internal
cp -r ${GOPATH}/pkg/mod/golang.org/x/net@{latest}/ipv4 vendor/golang.org/x/net
cp -r ${GOPATH}/pkg/mod/golang.org/x/net@{latest}/ipv6 vendor/golang.org/x/net
修改etcd
报错内容
vendor/go.etcd.io/bbolt/db.go:127:13: undeclared name maxMapSize for array length
vendor/go.etcd.io/bbolt/db.go:400:12: undefined: maxMapSize
vendor/go.etcd.io/bbolt/db.go:418:10: undefined: maxMapSize
vendor/go.etcd.io/bbolt/db.go:419:8: undefined: maxMapSize
vendor/go.etcd.io/bbolt/db.go:885:2: pos declared but not used
vendor/go.etcd.io/bbolt/bolt_unix.go:66:15: undeclared name maxMapSize for array length
vendor/go.etcd.io/bbolt/tx.go:533:12: undefined: maxAllocSize
vendor/go.etcd.io/bbolt/tx.go:534:10: undefined: maxAllocSize
vendor/go.etcd.io/bbolt/unsafe.go:27:12: undeclared name maxAllocSize for array length
拷贝 vendor/go.etcd.io/bbolt/bolt_arm64.go
为vendor/go.etcd.io/bbolt/bolt_loong64.go
并修改
// +build loong64
编译
KUBE_BUILD_PLATFORMS=linux/loong64 make all