# 创建目录
[root@reg ~]# mkdir /data/certs/ -p
# 生成认证 key 和证书
[root@reg ~]# openssl req -newkey rsa:4096 \ -nodes -sha256 -keyout /data/certs/hxd.org.key \ -addext "subjectAltName = DNS:reg.hxd.org"\ -x509 -days 365 -out /data/certs/hxd.org.crt
# 注意创建时,必须写对域名 Common Name (eg, your name or your server's hostname)
[]:reg.hxd.org
# 查看证书信息
[root@reg ~]# openssl x509 -in /data/certs/hxd.org.crt -noout -text
启用 docker,并设置开机启动
[root@reg ~]# systemctl enable --now docker
将 harbor 的证书颁发给其他三个主机
[root@k8s- ~]# mkdir /etc/docker/certs.d/reg.hxd.org/ -p
[root@reg ~]# for i in 100 10 20 ; do scp /data/certs/hxd.org.crt [email protected].$i:/etc/docker/certs.d/reg.hxd.org/ca.crt; done
# 上传到 harbor 仓库主机并解压
[root@reg ~]# tar zxf harbor-offline-installer-v2.5.4.tgz -C /opt/# 复制配置文件格式为.yml 结尾来启用文件
[root@reg ~]# cd /opt/
[root@reg opt]# ls containerd harbor
[root@reg opt]# cd harbor/
[root@reg harbor]# ls common common.sh docker-compose.yml harbor.v2.5.4.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
[root@reg harbor]# cp harbor.yml.tmpl harbor.yml
# 修改配置文件以下内容
[root@reg harbor]# vim harbor.yml
hostname: reg.hxd.org
certificate: /data/certs/hxd.org.crt
private_key: /data/certs/hxd.org.key
harbor_admin_password: 123
# 安装并启用 harbor
[root@reg harbor]# ./install.sh --help
Note: Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients. Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https. Please set --with-trivy if needs enable Trivy Please set --with-chartmuseum if needs enable Chartmuseum in Harbor
[root@reg harbor]# ./install.sh --with-chartmuseum
# 在 master 主机上登陆 harbor 仓库
[root@k8s-master ~]# docker login reg.hxd.org
Login Succeeded
[root@k8s-master ~]# docker info
Cgroup Driver: systemd # 资源管理更改为 systemd
https://reg.hxd.org/ # 认证 harbor 仓库
5、安装 K8S 部署工具
所有节点部署 K8S 软件仓库
[root@k8s- ~]# vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm
gpgcheck=0
[root@k8s-master ~]# vim kube-flannel.yml
image: flannel/flannel:v0.25.5
image: flannel/flannel-cni-plugin:v1.5.1-flannel1
image: flannel/flannel:v0.25.5
安装 flannel 网络插件
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml
# 查看集群节点
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 4h13m v1.30.0
k8s-node1 Ready <none> 4h11m v1.30.0
k8s-node2 Ready <none> 4h11m v1.30.0
注意:
所有阶段的 STATUS 为 Ready 状态,那么恭喜你,你的 kubernetes 就装好了!!
10、测试集群运行情况
建立一个 pod
# 上传 nginx-latest.tar.gz 镜像# 打标签
[root@k8s-master ~]# docker tag nginx:latest reg.hxd.org/library/nginx:latest
# 拉取到仓库
[root@k8s-master ~]# docker push reg.hxd.org/library/nginx:latest
# 建立 pod
[root@k8s-master ~]# kubectl run test --image nginx:latest
# 查看 pod 状态
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test 1/1 Running 0 4m48s
[root@k8s-master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test 1/1 Running 0 6m38s 10.244.2.2 k8s-node2 <none><none>
# 查看建立的 pos 信息
[root@k8s-master ~]# kubectl describe pods test
Container ID: docker://5c3ac30e03bd991bc9a20aa1ab49a098893b6fbbf03565cedd8e406c33590d0a
容器 id
Normal Scheduled 9m53s default-scheduler Successfully assigned default/test to k8s-node2
# 删除 pod
[root@k8s-master ~]# kubectl delete pod test