一、概述Kubernetes是一种高度可扩展的容器编排平台,可用于部署、管理和自动化容器化应用程序的运行。在某些情况下,离线部署Kubernetes可能是必需的,例如在没有互联网连接的安全环境中或在网络连接不可靠的情况下。以下是离线部署Kubernetes的一般步骤:获取Kubernetes二进制文
一、概述 Kubernetes是一种高度可扩展的容器编排平台,可用于部署、管理和自动化容器化应用程序的运行。在某些情况下,离线部署Kubernetes可能是必需的,例如在没有互联网连接的安全环境中或在网络连接不可靠的情况下。以下是离线部署Kubernetes的一般步骤:
获取Kubernetes二进制文件:从Kubernetes官网下载Kubernetes二进制文件并解压缩到本地。 准备离线镜像:在离线环境中,必须将所需的容器镜像下载到本地并存储在本地仓库中。可以使用Docker镜像导出/导入命令或Docker Registry Mirror工具将镜像从在线环境中导出并导入到离线环境中。 配置Kubernetes节点:在每个节点上安装必要的依赖项,例如Docker引擎、kubelet、kubeadm等。可以使用Docker离线安装程序将Docker引擎安装到离线节点中。 初始化Kubernetes集群:使用kubeadm init命令初始化集群,并将必要的配置文件和证书复制到节点上。在离线环境中,必须将kubelet和kubeadm所需的配置文件手动复制到每个节点上。 加入节点:使用kubeadm join命令将新节点加入到集群中。在离线环境中,必须手动复制kubelet和kubeadm配置文件,并在每个节点上使用kubeadm join命令将节点加入集群。 部署应用程序:使用kubectl命令在集群中部署应用程序,并将所需的容器镜像从本地仓库中拉取。 在离线环境中部署Kubernetes需要一些额外的工作,但是这是可能的,并且是部署Kubernetes的重要方法之一。
二、前期准备 1)节点信息 节点信息
主机名
IP
角色
操作系统
k8s 版本
local-168-182-110
192.168.182.110
master、keep alived(VIP :192.168.182.211)、nfs-server
centos7
1.23.6
local-168-182-111
192.168.182.111
master、keep alived、nfs-client
centos7
1.23.6
local-168-182-112
192.168.182.112
master、nfs-client
centos7
1.23.6
local-168-182-113
192.168.182.113
node、nfs-client
centos7
1.23.6
k8s 版本:https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG
2)修改主机名和配置hosts 修改主机名
复制 # 在192.168 .182 .110 执行
hostnamectl set - hostname local- 168 - 182 - 110
# 在192.168 .182 .111 执行
hostnamectl set - hostname local- 168 - 182 - 110
# 在192.168 .182 .112 执行
hostnamectl set - hostname local- 168 - 182 - 110
# 在192.168 .182 .113 执行
hostnamectl set - hostname local- 168 - 182 - 110
配置hosts
复制 cat >> / etc/ hosts<< EOF
192.168 .182 .110 local- 168 - 182 - 110
192.168 .182 .111 local- 168 - 182 - 111
192.168 .182 .112 local- 168 - 182 - 112
192.168 .182 .113 local- 168 - 182 - 113
# VIP
cluster- endpoint 192.168 .182 .211
EOF
3)配置ssh互信 复制 # 直接一直回车就行
ssh- keygen
ssh- copy- id - i ~/ .ssh / id_rsa.pub root@local- 168 - 182 - 110
ssh- copy- id - i ~/ .ssh / id_rsa.pub root@local- 168 - 182 - 111
ssh- copy- id - i ~/ .ssh / id_rsa.pub root@local- 168 - 182 - 112
ssh- copy- id - i ~/ .ssh / id_rsa.pub root@local- 168 - 182 - 113
4)时间同步 复制 yum install chrony - y
systemctl start chronyd
systemctl enable chronyd
chronyc sources
5)关闭防火墙 复制 systemctl stop firewalld
systemctl disable firewalld
6)关闭 swap 复制 # 临时关闭;关闭swap主要是为了性能考虑
swapoff - a
# 可以通过这个命令查看swap是否关闭了
free
# 永久关闭
sed - ri 's/.*swap.*/#&/' / etc/ fstab
7)禁用SELinux 复制 # 临时关闭
setenforce 0
# 永久禁用
sed - i 's/^SELINUX=enforcing$/SELINUX=disabled/' / etc/ selinux/ config
8)允许 iptables 检查桥接流量 若要显式加载此模块,请运行 sudo modprobe br_netfilter,通过运行 lsmod | grep br_netfilter 来验证 br_netfilter 模块是否已加载:
复制 sudo modprobe br_netfilter
lsmod | grep br_netfilter
为了让 Linux 节点的 iptables 能够正确查看桥接流量,请确认 sysctl 配置中的 net.bridge.bridge-nf-call-iptables 设置为 1。 例如:
复制 cat << EOF | sudo tee / etc/ modules- load.d / k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat << EOF | sudo tee / etc/ sysctl.d / k8s.conf
net.bridge .bridge - nf- call- iptables = 1
net.bridge .bridge - nf- call- ip6tables = 1
net.ipv4 .ip_forward = 1
EOF
# 应用 sysctl 参数而不重新启动
sudo sysctl --system
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 三、开始部署 下载地址:https://download.docker.com/linux/static/stable/x86_64/
镜像、安装包、kube-flannel.yml、deploy.yaml等资源可关注我的公众号【大数据与云原生技术分享】回复【k8s】即可获取。
1)离线安装 docker 1、下载 复制 # 下载
wget https: // download.docker .com / linux/ static/ stable/ x86_64/ docker- 20.10 .20 .tgz
# 解压
tar - zxvf docker- 20.10 .20 .tgz
2、解压的docker文件夹全部移动至/usr/bin目录 复制 cp - p docker/* /usr/bin
3、配置 docker 启动文件 在/usr/lib/systemd/system/目录下,创建docker.service文件
复制 cat> / usr/ lib/ systemd/ system/ docker.service << EOF
[ Unit]
Descriptinotallow= Docker Application Container Engine
Documentatinotallow= http: // docs.docker .com
After= network.target docker.socket
[ Service]
Type= notify
Envirnotallow=-/ run/ flannel/ docker
WorkingDirectory=/ usr/ local/ bin
ExecStart=/ usr/ bin/ dockerd \
- H tcp: // 0.0 .0 .0 : 4243 \
- H unix: /// var/ run/ docker.sock \
--selinux-enabled=false \
--log-opt max-size=1g
ExecReload=/ bin/ kill - s HUP $MAINPID
# Having non- zero Limit * s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container- local accounting.
LimitNOFILE= infinity
LimitNPROC= infinity
LimitCORE= infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax= infinity
TimeoutStartSec= 0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate= yes
# kill only the docker process, not all processes in the cgroup
KillMode= process
Restart= on - failure
[ Install]
WantedBy= multi- user.target
EOF
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 4、启动 docker 服务 复制 systemctl daemon- reload
# 设置为开机自启并现在立刻启动服务 --now:立刻启动服务
systemctl enable --now docker
# 查看容器状态
systemctl status docker
5、配置镜像下载加速器和 cgroupdriver 复制 cat >/ etc/ docker/ daemon.json << EOF
{
"registry-mirrors" : [ "http://hub-mirror.c.163.com" ] ,
"exec-opts" : [ "native.cgroupdriver=systemd" ]
}
EOF
systemctl restart docker
2)离线安装 kubeadm, kubelet, kubectl 1、下载 下载地址:https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG
复制 wget https: // dl.k8s .io / v1.23 .6 / kubernetes- server- linux- amd64.tar .gz
tar - xf kubernetes- server- linux- amd64.tar .gz
cd kubernetes/ server/ bin
cp - ar kubelet kubeadm kubectl / usr/ bin/
2、配置 kubeadm 启动文件 复制 cat >/ usr/ lib/ systemd/ system/ kubelet.service << EOF
[ Unit]
Descriptinotallow= kubelet: The Kubernetes Node Agent
Documentatinotallow= https: // kubernetes.io / docs/
[ Service]
ExecStart=/ usr/ bin/ kubelet
Restart= always
StartLimitInterval= 0
RestartSec= 10
[ Install]
WantedBy= multi- user.target
EOF
#注意ExecStart内容换行
mkdir - p / usr/ lib/ systemd/ system/ kubelet.service .d /
cat >/ usr/ lib/ systemd/ system/ kubelet.service .d / 10 - kubeadm.conf << EOF
[ Service]
Envirnotallow= "KUBELET_KUBECONFIG_ARGS=--bootstrap-kubecnotallow=/etc/kubernetes/bootstrap-kubelet.conf --kubecnotallow=/etc/kubernetes/kubelet.conf"
Envirnotallow= "KUBELET_CONFIG_ARGS=--cnotallow=/var/lib/kubelet/config.yaml"
Envirnotallow=-/ var/ lib/ kubelet/ kubeadm- flags.env
Envirnotallow=-/ etc/ sysconfig/ kubelet
ExecStart=
ExecStart=/ usr/ bin/ kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
EOF
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 3、导入镜像 下载资源包,解压进入images目录,执行以下命令就可以导入镜像了
4、启动 kubelet 复制 # 设置为开机自启并现在立刻启动服务 --now:立刻启动服务
systemctl enable --now kubelet
3)集群初始化 1、安装 keep alived 生成 VIP 实现高可用 【1】下载下载地址:https://www.keep alived.org/download.html
复制 wget https: // www.keep alived .org / software/ keep alived- 2.2 .7 .tar .gz --no-check-certificate
tar - zxvf keep alived- 2.2 .7 .tar .gz
# 安装openssl(编译keep alived需要)
yum - y install openssl openssl- devel
# 编译 keep alived
yum install gcc - y
cd keep alived- 2.2 .7 && ./ configure --prefix=/usr/local/keep alived --syscnotallow=/etc
make && make install
# 配置环境变量
cp / usr/ local/ keep alived/ sbin/ keep alived / usr/ sbin/ keep alived
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 【2】master 配置
复制 cat > / etc/ keep alived/ keep alived.conf << EOF
! Configuration File for keep alived
global_defs {
#每个keep alived取个不同名称
router_id 56
}
vrrp_instance VI_1 {
# MASTER为主实例, BACKUP 为从实例
state MASTER
# 网卡名称
interface ens33
# 主备这里要配置为同样的
virtual_router_id 68
# 优先级, 主要高于备. 一般主配置为100 备配置为80
priority 100
advert_int 1
# 主动抢占, 主备都开启的话, 服务器抢占过去后, 要等这个服务器keep alived停掉才会漂移到另一台
nopreempt
authentication {
# 主备必须配置成同样的
auth_type PASS
# 主备必须配置成同样的
auth_pass 1111
}
virtual_ipaddress {
# vip, 主备必须配置一样
192.168 .182 .211
}
}
EOF
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 【3】backend 配置
复制 cat > / etc/ keep alived/ keep alived.conf << EOF
! Configuration File for keep alived
global_defs {
#每个keep alived取个不同名称
router_id 56
}
vrrp_instance VI_1 {
# MASTER为主实例, BACKUP 为从实例
state BACKUP
# 网卡名称
interface ens33
# 主备这里要配置为同样的
virtual_router_id 68
# 优先级, 主要高于备. 一般主配置为100 备配置为80
priority 80
advert_int 1
# 主动抢占, 主备都开启的话, 服务器抢占过去后, 要等这个服务器keep alived停掉才会漂移到另一台
nopreempt
authentication {
# 主备必须配置成同样的
auth_type PASS
# 主备必须配置成同样的
auth_pass 1111
}
virtual_ipaddress {
# vip, 主备必须配置一样
192.168 .182 .211
}
}
EOF
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 【4】配置服务启动
复制 cat > / usr/ lib/ systemd/ system/ keep alived.service << EOF
[ Unit]
Descriptinotallow= LVS and VRRP High Availability Monitor
After= network- online.target syslog.target
Wants= network- online.target
Documentatinotallow= man: keep alived( 8 )
Documentatinotallow= man: keep alived.conf ( 5 )
Documentatinotallow= man: genhash( 1 )
Documentatinotallow= https: // keep alived.org
[ Service]
Type= forking
PIDFile=/ run/ keep alived.pid
KillMode= process
Envirnotallow=-/ usr/ local/ keep alived/ sysconfig/ keep alived
ExecStart=/ usr/ local/ keep alived/ sbin/ keep alived $KEEPALIVED_OPTIONS
ExecReload=/ bin/ kill - HUP $MAINPID
[ Install]
WantedBy= multi- user.target
EOF
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 【5】启动 keep alived
复制 systemctl daemon- reload
systemctl enable --now keep alived
2、创建初始化配置文件 注意这里使用VIP
复制 kubeadm config print init- defaults > kubeadm- config.yaml
3、k8s 集群初始化 这里追加tee命令将初始化日志输出到kubeadm-init.log中以备用(可选)。
复制 kubeadm init --cnotallow=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
或者直接初始化
复制 kubeadm init \
--apiserver-advertise-address=192.168.182.211 \
--image-repository registry.aliyuncs.com/google_containers \
--control-plane-endpoint=cluster-endpoint \
--kubernetes-version v1.23.6 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--v=5
4、安装 cni 插件(flannel) 复制 # wget https: // raw.githubusercontent .com / flannel- io/ flannel/ v0.20 .2 / Documentation/ kube- flannel.yml
kubeclt apply - f kube- flannel.yml
4)添加 master 节点 复制 # 在需要添加的master节点上执行
CERT_KEY= `ssh cluster- endpoint "kubeadm init phase upload-certs --upload-certs|tail -1" `
join_str= `ssh cluster- endpoint kubeadm token create --print-join-command`
echo $join_str " --control-plane --certificate-key $CERT_KEY --v=5"
# 拿到上面打印的命令在需要添加的节点上执行
# --control-plane 标志通知 kubeadm join 创建一个新的控制平面。加入master必须加这个标记
# --certificate-key ... 将导致从集群中的 kubeadm-certs Secret 下载控制平面证书并使用给定的密钥进行解密。这里的值就是上面这个命令(kubeadm init phase upload-certs --upload-certs)打印出的key。
mkdir - p $HOME/ .kube
sudo cp - i / etc/ kubernetes/ admin.conf $HOME/ .kube / config
sudo chown $( id - u) : $( id - g) $HOME/ .kube / config
# 去掉master污点
# kubectl taint nodes `hostname` node- role.kubernetes .io / master: NoSchedule- 2 >/ dev/ null
# kubectl taint nodes `hostname` node.kubernetes .io / not - ready: NoSchedule- 2 >/ dev/ null
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 5)添加 node 节点 复制 CERT_KEY= `ssh cluster- endpoint "kubeadm init phase upload-certs --upload-certs|tail -1" `
join_str= `ssh cluster- endpoint kubeadm token create --print-join-command`
echo $join_str " --certificate-key $CERT_KEY --v=5"
6)配置 IPVS 1、加载ip_vs相关内核模块 复制 modprobe -- ip_vs
modprobe -- ip_vs_sh
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
# 验证开启了ipvs
lsmod | grep ip_vs
2、离线安装 ipvsadm 工具 在线安装就非常简单了
下载地址:http://www.linuxvirtualserver.org/software/ipvs.html
复制 wget https: // kernel.org / pub/ linux/ utils/ kernel/ ipvsadm/ ipvsadm- 1.31 .tar .gz --no-check-certificate
tar - xzvf ipvsadm- 1.31 .tar .gz && cd ipvsadm- 1.31
# 先安装依赖包
yum install - y libnl libnl- devel gcc
# 编译安装
make && make install
# 查看版本号
ipvsadm - version
3、编辑kube-proxy配置文件,mode修改成ipvs 复制 kubectl edit configmap - n kube- system kube- proxy
4、重启kube-proxy 复制 # 先查看
kubectl get pod - n kube- system | grep kube- proxy
# 再delete让它自拉起
kubectl get pod - n kube- system | grep kube- proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
# 再查看
kubectl get pod - n kube- system | grep kube- proxy
7)安装 ingress-nginx 复制 # wget https: // raw.githubusercontent .com / kubernetes/ ingress- nginx/ controller- v1.2 .0 / deploy/ static/ provider/ cloud/ deploy.yaml - O / tmp/ deploy.yaml
kubectl apply - f / tmp/ deploy.yaml
8)安装 nfs provisioner 1、安装helm helm安装包在提供的资源包里也是有的,可以不用再去外网下载的。
复制 # 下载包
wget https: // get.helm .sh / helm- v3.7 .1 - linux- amd64.tar .gz - O / tmp/ helm- v3.7 .1 - linux- amd64.tar .gz
# 解压压缩包
tar - xf / tmp/ helm- v3.7 .1 - linux- amd64.tar .gz - C / root/
# 制作软连接
ln - s / root/ linux- amd64/ helm / usr/ local/ bin/ helm
2、添加helm仓库源 复制 # 添加helm仓库源
helm repo add nfs- subdir- external- provisioner https: // kubernetes- sigs.github .io / nfs- subdir- external- provisioner/
3、安装 nfs 【服务端】
复制 #### 安装nfs
yum - y install nfs- utils rpcbind
# 服务端
mkdir - p / opt/ nfsdata
# 授权共享目录
chmod 666 / opt/ nfsdata
cat > / etc/ exports<< EOF
/ opt/ nfsdata * ( rw, no_root_squash, no_all_squash, sync)
EOF
# 配置生效
exportfs - r
systemctl enable --now rpcbind
systemctl enable --now nfs-server
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 【客户端】
复制 yum - y install rpcbind
systemctl enable --now rpcbind
3、nfs provisioner 复制 ### helm安装nfs provisioner,安装包在提供的资源里也有,可以不用再去外网下载
helm install nfs- subdir- external- provisioner ./ nfs- subdir- external- provisioner- 4.0 .17 .tgz \
--namespace=nfs-provisioner \
--create-namespace \
--set image.repository=willdockerhub/nfs-subdir-external-provisioner \
--set image.tag=v4.0.2 \
--set replicaCount=2 \
--set storageClass.name=nfs-client \
--set storageClass.defaultClass=true \
--set nfs.server=cluster-endpoint \
--set nfs.path=/opt/nfsdata
# 查看
kubectl get pods, deploy, sc - n nfs- provisioner
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 9)安装 Dashboard 1、安装 GitHub地址:https://github.com/kubernetes/dashboard
复制 kubectl apply - f dashboard.yaml
# 查看
kubectl get pods, svc - n kubernetes- dashboard
2、创建登录用户 复制 cat > ServiceAccount.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin- user
namespace: kubernetes- dashboard
---
apiVersion: rbac.authorization .k8s .io / v1
kind: ClusterRoleBinding
metadata:
name: admin- user
roleRef:
apiGroup: rbac.authorization .k8s .io
kind: ClusterRole
name: cluster- admin
subjects:
- kind: ServiceAccount
name: admin- user
namespace: kubernetes- dashboard
EOF
kubectl apply - f ServiceAccount.yaml
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 3、创建并获取登录token 复制 kubectl - n kubernetes- dashboard create token admin- user
4、登录 web
登录地址:https://ip:31443/,如果提示如下,建议换成火狐浏览器试试。(如果有证书情况下是不会有种问题的。)
火狐浏览器访问web
10)安装镜像仓库 Harbor 1、创建证书 复制 mkdir stl && cd stl
# 生成 CA 证书私钥
openssl genrsa - out ca.key 4096
# 生成 CA 证书
openssl req - x509 - new - nodes - sha512 - days 3650 \
- subj "/C=CN/ST=Guangdong/L=Shenzhen/O=harbor/OU=harbor/CN=myharbor.com" \
- key ca.key \
- out ca.crt
# 创建域名证书,生成私钥
openssl genrsa - out myharbor.com .key 4096
# 生成证书签名请求 CSR
openssl req - sha512 - new \
- subj "/C=CN/ST=Guangdong/L=Shenzhen/O=harbor/OU=harbor/CN=myharbor.com" \
- key myharbor.com .key \
- out myharbor.com .csr
# 生成 x509 v3 扩展
cat > v3.ext <<- EOF
authorityKeyIdentifier= keyid, issuer
basicCnotallow= CA: FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ alt_names]
DNS.1 = myharbor.com
DNS.2 =* .myharbor .com
DNS.3 = hostname
EOF
#创建 Harbor 访问证书
openssl x509 - req - sha512 - days 3650 \
- extfile v3.ext \
- CA ca.crt - CAkey ca.key - CAcreateserial \
- in myharbor.com .csr \
- out myharbor.com .crt
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 2、创建证书秘钥 复制 kubectl create secret tls myharbor.com --key myharbor.com.key --cert myharbor.com.crt -n harbor
kubectl get secret myharbor.com - n harbor
3、添加 Chart 库 复制 helm repo add harbor https: // helm.goharbor .io
4、开始部署 harbor 复制 # 下载安装包
helm pull harbor/ harbor
# harbor- 1.11 .1 .tgz 安装包在提供的资源包里是有的,可以不用再去外网下载的。
helm install myharbor ./ harbor- 1.11 .1 .tgz \
--namespace=harbor --create-namespace \
--set expose.ingress.hosts.core=myharbor.com \
--set expose.ingress.hosts.notary=notary.myharbor.com \
--set-string expose.ingress.annotations.'nginx\.org/client-max-body-size'="1024m" \
--set expose.tls.secretName=myharbor.com \
--set persistence.persistentVolumeClaim.registry.storageClass=nfs-client \
--set persistence.persistentVolumeClaim.jobservice.storageClass=nfs-client \
--set persistence.persistentVolumeClaim.database.storageClass=nfs-client \
--set persistence.persistentVolumeClaim.redis.storageClass=nfs-client \
--set persistence.persistentVolumeClaim.trivy.storageClass=nfs-client \
--set persistence.persistentVolumeClaim.chartmuseum.storageClass=nfs-client \
--set persistence.enabled=true \
--set externalURL=https://myharbor.com \
--set harborAdminPassword=Harbor12345
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 5、查看 复制 kubectl get pods, ingress - n harbor
5、web 访问 配置hosts(如果是真实的域名,就可以不用配置hosts了)
复制 192.168 .182 .110 myharbor.com
访问地址:https://myharbor.com/
账号/密码:admin/Harbor12345(注意:这里的密码是上面安装时自定义的)