admin管理员组文章数量:1028186
【信创】飞腾/鲲鹏+麒麟V4国防版
随着信创政策推动和中美关系的变化,特别是在涉及国家安全的重点领域,相关企业使用国产芯片和国产操作系统,已成为关键信息基础设施建设的刚性要求。由于国内环境特殊而且很多企业项目是部署在内网和专网的,所以离线部署就成为了常用的部署方式。
本文将演示基于arm64架构的麒麟V4国防版操作系统,离线部署K8s和KubeSphere。
环境涉及软件版本信息
- 服务器芯片1: Kunpeng-920
- 服务器芯片2: 飞腾d2000
- 操作系统1:麒麟 V4国防版服务器端
- 操作系统2:麒麟 V4国防版桌面端
- Docker: 24.0.9
- KubeSphere:v3.4.1
- Kubernetes:v1.25.16
- KubeKey: v3.1.5
1.说明
本文只演示离线部署过程,离线制品和其他安装包可查看之前文章自己制作,也可添加作者微信【sd_zdhr】获取。若有其他操作系统需求如:麒麟信安、UOS、欧拉、麒麟V10、中标麒麟、龙蜥等也可联系作者。
2.移除自带的podman
podman是麒麟系统自带的容器引擎,为避免后续与docker冲突,直接卸载。否则后续coredns/nodelocaldns也会受影响无法启动以及各种docker权限问题。所有节点执行
代码语言:javascript代码运行次数:0运行复制yum remove podman
3.将安装包拷贝至离线环境
将下载的 KubeKey 、制品 artifact 、脚本和导出的镜像通过 U 盘等介质拷贝至离线环境安装节点。
注意:
需要上传到/root 目录 麒麟V4国防版对磁盘目录管理比较严格,非root用户尽量在/home/用户下目录操作
这里保险起见,直接使用root用户操作,放置文件到/root目录下
4.安装Harbor私有仓库
由于arm版harbor官方不提供安装包,kk无法完成自动安装,需要我们手动安装
- 安装docker和docker-compose
安装包-云盘:docker[1]
解压后执行其中的install.sh
- 安装harbor
安装包: harbor[2]
解压后执行其中的install.sh
输入ip后等待安装完成
- 创建harbor中的项目
vim create_project_harbor.sh
代码语言:javascript代码运行次数:0运行复制#!/usr/bin/env bash
url=";#修改url的值为
user="admin"
passwd="Harbor12345"
harbor_projects=(
kubesphereio
kubesphere
)
for project in"${harbor_projects[@]}"; do
echo"creating $project"
curl -u "${user}:${passwd}" -X POST -H "Content-Type: application/json""${url}/api/v2.0/projects" -d "{ \"project_name\": \"${project}\", \"public\": true}" -k #curl命令末尾加上 -k
done
脚本授权后,执行脚本创建 ./create_project_harbor.sh
5.修改config-ks.yaml配置文件
修改相关节点和harbor信息
注意:
配置节点IP时,使用root账号,提前用ssh root@IP
方式确定好IP和密码
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: node1, address: 192.168.200.7, internalAddress: "192.168.200.7", user: root, password: "123456", arch: arm64}
roleGroups:
etcd:
- node1 # All the nodes in your cluster that serve as the etcd nodes.
master:
- node1
# - node[2:10] # From node2 to node10. All the nodes in your cluster that serve as the master nodes.
worker:
- node1
registry:
- node1
controlPlaneEndpoint:
# Internal loadbalancer for apiservers. Support: haproxy, kube-vip [Default: ""]
internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.25.16
containerManager: docker
clusterName: cluster.local
# Whether to install a script which can automatically renew the Kubernetes control plane certificates. [Default: false]
autoRenewCerts: true
# maxPods is the number of Pods that can run on this Kubelet. [Default: 110]
maxPods: 210
etcd:
type: kubekey
## caFile, certFile and keyFile need not be set, if TLS authentication is not enabled for the existing etcd.
# external:
# endpoints:
# - https://192.168.6.6:2379
# caFile: /pki/etcd/ca.crt
# certFile: /pki/etcd/etcd.crt
# keyFile: /pki/etcd/etcd.key
dataDir: "/var/lib/etcd"
heartbeatInterval: 250
electionTimeout: 5000
snapshotCount: 10000
autoCompactionRetention: 8
metrics: basic
quotaBackendBytes: 2147483648
maxRequestBytes: 1572864
maxSnapshots: 5
maxWals: 5
logLevel: info
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
multusCNI:
enabled: false
storage:
openebs:
basePath: /var/openebs/local # base path of the local PV provisioner
registry:
type: harbor
registryMirrors: []
insecureRegistries: []
privateRegistry: "dockerhub.kubekey.local"
namespaceOverride: "kubesphereio"
auths: # if docker add by `docker login`, if containerd append to `/etc/containerd/config.toml`
"dockerhub.kubekey.local":
username: "admin"
password: Harbor12345
skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.
plainHTTP: false # Allow contacting registries over HTTP.
certsPath: "/etc/docker/certs.d/dockerhub.kubekey.local" # Use certificates at path (*.crt, *.cert, *.key) to connect to the registry.
addons: [] # You can install cloud-native addons (Chart or YAML) by using this field.
---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
name: ks-installer
namespace: kubesphere-system
labels:
version: v3.4.1
...
6.推送镜像至私有仓库
解压 ks3.4.1-images.tar.gz的压缩包,后执行./load-push.sh
将镜像上传至私有仓库
- 推送脚本
vim ./load-push.sh
代码语言:javascript代码运行次数:0运行复制#!/bin/bash
#
FILES=$(find . -type f \( -iname "*.tar" -o -iname "*.tar.gz" \) -printf '%P\n' | grep -E ".tar$|.tar.gz$")
Harbor="dockerhub.kubekey.local"
ProjectName="kubesphereio"
docker login -u admin -p Harbor12345 ${Harbor}
echo "--------[Login Harbor succeed]--------"
# 遍历所有 ".tar" 或 ".tar.gz" 文件,逐个加载 Docker 镜像
for file in ${FILES}
do
echo "--------[Loading Docker image from $file]--------"
docker load -i "$file" > loadimages
IMAGE=`cat loadimages | grep 'Loaded image:' | awk '{print $3}' | head -1`
IMAGE2=`cat loadimages | grep 'Loaded image:' | awk '{print $3}' | head -1|awk -F / '{print $3}'`
echo "--------[$IMAGE]--------"
docker tag $IMAGE $Harbor/$ProjectName/$IMAGE2
docker push $Harbor/$ProjectName/$IMAGE2
done
echo "--------[All Docker images push successfully]--------"
代码语言:javascript代码运行次数:0运行复制./load-push.sh
7.安装k8s和KubeSphere
代码语言:javascript代码运行次数:0运行复制./kk create cluster -f config-ks.yaml
此处需要执行两遍命令,第一遍目的是解压制品,由于制品中并非完整制品。第一次执行时会报错。第二次去掉参数-a ks3.4-artifact.tar.gz
- 第一次执行
./kk create cluster -f config-sample.yaml -a ks3.4-artifact.tar.gz
- 第二次执行
./kk create cluster -f config-sample.yaml
等待大概十几分钟,看到成功消息
8 验证
基础组件运行正常
同样适用于国防版服务端镜像:Kylin-4.0.2-server-sp4-419live-CY_01-20231101.J1-ARM64.iso
9 总结
本文实战记录基于鲲鹏/飞腾芯片的麒麟 V4 国防版操作系统,离线部署 K8s 及 KubeSphere 的全过程,适合在无外网环境下快速搭建 K8s 集群及 KubeSphere 平台。
引用链接
[1]
docker:
[2]
harbor:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-26,如有侵权请联系 cloudcommunity@tencent 删除脚本镜像芯片部署操作系统【信创】飞腾/鲲鹏+麒麟V4国防版
随着信创政策推动和中美关系的变化,特别是在涉及国家安全的重点领域,相关企业使用国产芯片和国产操作系统,已成为关键信息基础设施建设的刚性要求。由于国内环境特殊而且很多企业项目是部署在内网和专网的,所以离线部署就成为了常用的部署方式。
本文将演示基于arm64架构的麒麟V4国防版操作系统,离线部署K8s和KubeSphere。
环境涉及软件版本信息
- 服务器芯片1: Kunpeng-920
- 服务器芯片2: 飞腾d2000
- 操作系统1:麒麟 V4国防版服务器端
- 操作系统2:麒麟 V4国防版桌面端
- Docker: 24.0.9
- KubeSphere:v3.4.1
- Kubernetes:v1.25.16
- KubeKey: v3.1.5
1.说明
本文只演示离线部署过程,离线制品和其他安装包可查看之前文章自己制作,也可添加作者微信【sd_zdhr】获取。若有其他操作系统需求如:麒麟信安、UOS、欧拉、麒麟V10、中标麒麟、龙蜥等也可联系作者。
2.移除自带的podman
podman是麒麟系统自带的容器引擎,为避免后续与docker冲突,直接卸载。否则后续coredns/nodelocaldns也会受影响无法启动以及各种docker权限问题。所有节点执行
代码语言:javascript代码运行次数:0运行复制yum remove podman
3.将安装包拷贝至离线环境
将下载的 KubeKey 、制品 artifact 、脚本和导出的镜像通过 U 盘等介质拷贝至离线环境安装节点。
注意:
需要上传到/root 目录 麒麟V4国防版对磁盘目录管理比较严格,非root用户尽量在/home/用户下目录操作
这里保险起见,直接使用root用户操作,放置文件到/root目录下
4.安装Harbor私有仓库
由于arm版harbor官方不提供安装包,kk无法完成自动安装,需要我们手动安装
- 安装docker和docker-compose
安装包-云盘:docker[1]
解压后执行其中的install.sh
- 安装harbor
安装包: harbor[2]
解压后执行其中的install.sh
输入ip后等待安装完成
- 创建harbor中的项目
vim create_project_harbor.sh
代码语言:javascript代码运行次数:0运行复制#!/usr/bin/env bash
url=";#修改url的值为
user="admin"
passwd="Harbor12345"
harbor_projects=(
kubesphereio
kubesphere
)
for project in"${harbor_projects[@]}"; do
echo"creating $project"
curl -u "${user}:${passwd}" -X POST -H "Content-Type: application/json""${url}/api/v2.0/projects" -d "{ \"project_name\": \"${project}\", \"public\": true}" -k #curl命令末尾加上 -k
done
脚本授权后,执行脚本创建 ./create_project_harbor.sh
5.修改config-ks.yaml配置文件
修改相关节点和harbor信息
注意:
配置节点IP时,使用root账号,提前用ssh root@IP
方式确定好IP和密码
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: node1, address: 192.168.200.7, internalAddress: "192.168.200.7", user: root, password: "123456", arch: arm64}
roleGroups:
etcd:
- node1 # All the nodes in your cluster that serve as the etcd nodes.
master:
- node1
# - node[2:10] # From node2 to node10. All the nodes in your cluster that serve as the master nodes.
worker:
- node1
registry:
- node1
controlPlaneEndpoint:
# Internal loadbalancer for apiservers. Support: haproxy, kube-vip [Default: ""]
internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.25.16
containerManager: docker
clusterName: cluster.local
# Whether to install a script which can automatically renew the Kubernetes control plane certificates. [Default: false]
autoRenewCerts: true
# maxPods is the number of Pods that can run on this Kubelet. [Default: 110]
maxPods: 210
etcd:
type: kubekey
## caFile, certFile and keyFile need not be set, if TLS authentication is not enabled for the existing etcd.
# external:
# endpoints:
# - https://192.168.6.6:2379
# caFile: /pki/etcd/ca.crt
# certFile: /pki/etcd/etcd.crt
# keyFile: /pki/etcd/etcd.key
dataDir: "/var/lib/etcd"
heartbeatInterval: 250
electionTimeout: 5000
snapshotCount: 10000
autoCompactionRetention: 8
metrics: basic
quotaBackendBytes: 2147483648
maxRequestBytes: 1572864
maxSnapshots: 5
maxWals: 5
logLevel: info
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
multusCNI:
enabled: false
storage:
openebs:
basePath: /var/openebs/local # base path of the local PV provisioner
registry:
type: harbor
registryMirrors: []
insecureRegistries: []
privateRegistry: "dockerhub.kubekey.local"
namespaceOverride: "kubesphereio"
auths: # if docker add by `docker login`, if containerd append to `/etc/containerd/config.toml`
"dockerhub.kubekey.local":
username: "admin"
password: Harbor12345
skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.
plainHTTP: false # Allow contacting registries over HTTP.
certsPath: "/etc/docker/certs.d/dockerhub.kubekey.local" # Use certificates at path (*.crt, *.cert, *.key) to connect to the registry.
addons: [] # You can install cloud-native addons (Chart or YAML) by using this field.
---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
name: ks-installer
namespace: kubesphere-system
labels:
version: v3.4.1
...
6.推送镜像至私有仓库
解压 ks3.4.1-images.tar.gz的压缩包,后执行./load-push.sh
将镜像上传至私有仓库
- 推送脚本
vim ./load-push.sh
代码语言:javascript代码运行次数:0运行复制#!/bin/bash
#
FILES=$(find . -type f \( -iname "*.tar" -o -iname "*.tar.gz" \) -printf '%P\n' | grep -E ".tar$|.tar.gz$")
Harbor="dockerhub.kubekey.local"
ProjectName="kubesphereio"
docker login -u admin -p Harbor12345 ${Harbor}
echo "--------[Login Harbor succeed]--------"
# 遍历所有 ".tar" 或 ".tar.gz" 文件,逐个加载 Docker 镜像
for file in ${FILES}
do
echo "--------[Loading Docker image from $file]--------"
docker load -i "$file" > loadimages
IMAGE=`cat loadimages | grep 'Loaded image:' | awk '{print $3}' | head -1`
IMAGE2=`cat loadimages | grep 'Loaded image:' | awk '{print $3}' | head -1|awk -F / '{print $3}'`
echo "--------[$IMAGE]--------"
docker tag $IMAGE $Harbor/$ProjectName/$IMAGE2
docker push $Harbor/$ProjectName/$IMAGE2
done
echo "--------[All Docker images push successfully]--------"
代码语言:javascript代码运行次数:0运行复制./load-push.sh
7.安装k8s和KubeSphere
代码语言:javascript代码运行次数:0运行复制./kk create cluster -f config-ks.yaml
此处需要执行两遍命令,第一遍目的是解压制品,由于制品中并非完整制品。第一次执行时会报错。第二次去掉参数-a ks3.4-artifact.tar.gz
- 第一次执行
./kk create cluster -f config-sample.yaml -a ks3.4-artifact.tar.gz
- 第二次执行
./kk create cluster -f config-sample.yaml
等待大概十几分钟,看到成功消息
8 验证
基础组件运行正常
同样适用于国防版服务端镜像:Kylin-4.0.2-server-sp4-419live-CY_01-20231101.J1-ARM64.iso
9 总结
本文实战记录基于鲲鹏/飞腾芯片的麒麟 V4 国防版操作系统,离线部署 K8s 及 KubeSphere 的全过程,适合在无外网环境下快速搭建 K8s 集群及 KubeSphere 平台。
引用链接
[1]
docker:
[2]
harbor:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-26,如有侵权请联系 cloudcommunity@tencent 删除脚本镜像芯片部署操作系统本文标签: 信创飞腾鲲鹏麒麟V4国防版
版权声明:本文标题:【信创】飞腾鲲鹏+麒麟V4国防版 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747499648a2169226.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论