为了练习Kubernets管理命令和相关知识,在自己笔记本电脑上搭建一个Kubernets环境,选择使用国产的kubekey(kk)工具安装,简单记录一下安装过程。
参考资料:
https://kubesphere.io/zh/docs/v3.4/quick-start/all-in-one-on-linux/
https://github.com/kubesphere/kubekey/blob/master/docs/config-example.md
准备虚拟机
准备好CentOS 7.9虚拟机,禁止使用swap区。
虚拟机资源建议配置为 :4c,6G内存,40G硬盘空间,cpu资源太少,有些pod会报资源不足,无法运行起来。
yum update更新CentOS系统。
禁止selinux和防火墙。
修改主机名和hosts文件。
虚拟机安装和准备过程参考我之前写的安装教程:
https://blog.csdn.net/ljflinux/article/details/140916747
配置安装环境
安装相关软件包:
yum install -y tree sysstat net-tools yum-utils bridge-utils bind-utils psmisc vim wget curl xeye readline readline-devel autoconf jq socat conntrack ebtables ipset
安装docker(也可以不安装,kk会自动下载docker或containerd)。
需要编辑,进行镜像仓库的加速:
vim/etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerpull.com",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.awsl9527.cn"
]
}
并重启docker服务:
systemctl daemon-reload && sudo systemctl restart docker
下载安装工具kk
先去GitHub查看一下kk最新的稳定版本:
https://github.com/kubesphere/kubekey/releases
我安装的时候最新稳定版是v3.1.6,下载kk到当前目录:
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.6 sh -
查看kk支持的kubernets版本列表,根据自己的需要选择要安装的kubernets版本:
./kk version --show-supported-k8s
设置kk安装环境为国内环境(会使用阿里云的镜像源),不过现在docker hub放开国内访问了,所以不设置这个环境变量也能够安装成功:
export KKZONE=cn
使用kk生成安装配置模板文件config-sample.yaml:
./kk create config --with-kubernetes v1.28.13 --with-kubesphere v3.4.1
编辑config-sample.yaml配置文件:
参考说明:https://github.com/kubesphere/kubekey/blob/master/docs/config-example.md
vim config-sample.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: k8s-aio
spec:
hosts:
- {name: k8s, address: 192.168.152.21, internalAddress: 192.168.152.21, user: root, password: "Root@123"}
# - {name: node2, address: 172.16.0.3, internalAddress: 172.16.0.3, user: ubuntu, password: "Qcloud@123"}
roleGroups:
etcd:
- k8s
control-plane:
- k8s
worker:
- k8s
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
# internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.28.13
clusterName: cluster.k8s
autoRenewCerts: true
containerManager: docker
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 172.16.0.0/18
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
registry:
privateRegistry: ""
namespaceOverride: ""
registryMirrors: []
insecureRegistries: []
addons: []
---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
name: ks-installer
namespace: kubesphere-system
labels:
version: v3.4.1
spec:
persistence:
storageClass: ""
authentication:
jwtSecret: ""
local_registry: ""
# dev_tag: ""
etcd:
monitoring: false
endpointIps: localhost
port: 2379
tlsEnable: true
common:
core:
console:
enableMultiLogin: true
port: 30880
type: NodePort
# apiserver:
# resources: {}
# controllerManager:
# resources: {}
redis:
enabled: false
enableHA: false
volumeSize: 2Gi
openldap:
enabled: false
volumeSize: 2Gi
minio:
volumeSize: 20Gi
monitoring:
# type: external
endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090
GPUMonitoring:
enabled: false
gpu:
kinds:
- resourceName: "nvidia.com/gpu"
resourceType: "GPU"
default: true
es:
# master:
# volumeSize: 4Gi
# replicas: 1
# resources: {}
# data:
# volumeSize: 20Gi
# replicas: 1
# resources: {}
enabled: false
logMaxAge: 7
elkPrefix: logstash
basicAuth:
enabled: false
username: ""
password: ""
externalElasticsearchHost: ""
externalElasticsearchPort: ""
opensearch:
# master:
# volumeSize: 4Gi
# replicas: 1
# resources: {}
# data:
# volumeSize: 20Gi
# replicas: 1
# resources: {}
enabled: true
logMaxAge: 7
opensearchPrefix: whizard
basicAuth:
enabled: true
username: "admin"
password: "admin"
externalOpensearchHost: ""
externalOpensearchPort: ""
dashboard:
enabled: false
alerting:
enabled: false
# thanosruler:
# replicas: 1
# resources: {}
auditing:
enabled: false
# operator:
# resources: {}
# webhook:
# resources: {}
devops:
enabled: false
jenkinsCpuReq: 0.5
jenkinsCpuLim: 1
jenkinsMemoryReq: 4Gi
jenkinsMemoryLim: 4Gi
jenkinsVolumeSize: 16Gi
events:
enabled: false
# operator:
# resources: {}
# exporter:
# resources: {}
ruler:
enabled: true
replicas: 2
# resources: {}
logging:
enabled: false
logsidecar:
enabled: true
replicas: 2
# resources: {}
metrics_server:
enabled: true
monitoring:
storageClass: ""
node_exporter:
port: 9100
# resources: {}
# kube_rbac_proxy:
# resources: {}
# kube_state_metrics:
# resources: {}
# prometheus:
# replicas: 1
# volumeSize: 20Gi
# resources: {}
# operator:
# resources: {}
# alertmanager:
# replicas: 1
# resources: {}
# notification_manager:
# resources: {}
# operator:
# resources: {}
# proxy:
# resources: {}
gpu:
nvidia_dcgm_exporter:
enabled: false
# resources: {}
multicluster:
clusterRole: none
network:
networkpolicy:
enabled: false
ippool:
type: none
topology:
type: none
openpitrix:
store:
enabled: false
servicemesh:
enabled: false
istio:
components:
ingressGateways:
- name: istio-ingressgateway
enabled: false
cni:
enabled: false
edgeruntime:
enabled: false
kubeedge:
enabled: false
cloudCore:
cloudHub:
advertiseAddress:
- ""
service:
cloudhubNodePort: "30000"
cloudhubQuicNodePort: "30001"
cloudhubHttpsNodePort: "30002"
cloudstreamNodePort: "30003"
tunnelNodePort: "30004"
# resources: {}
# hostNetWork: false
iptables-manager:
enabled: true
mode: "external"
# resources: {}
# edgeService:
# resources: {}
gatekeeper:
enabled: false
# controller_manager:
# resources: {}
# audit:
# resources: {}
terminal:
timeout: 600
zone: ""
使用kk安装kubesphere
使用配置文件安装k8s,网络正常情况下30-50分钟安装完成:
./kk create cluster -f config-sample.yaml
安装完毕后的管理登录地址(ip是虚拟机的ip):
Console: http://192.168.152.21:30880
Account: admin
Password: P@88w0rd # 第一次web管理界面登录时需要修改密码。
安装完毕后的运行状态:
[root@k8s kubekey]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s Ready control-plane,worker 61m v1.28.13
[root@k8s kubekey]#
[root@k8s kubekey]#
[root@k8s kubekey]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-7bbcc5b6fb-p5xrm 1/1 Running 1 (27m ago) 60m
kube-system calico-node-x75q6 1/1 Running 1 (27m ago) 60m
kube-system coredns-575bbdcdb5-9rzfz 1/1 Running 1 (27m ago) 60m
kube-system coredns-575bbdcdb5-hjgwj 1/1 Running 1 (27m ago) 60m
kube-system kube-apiserver-k8s 1/1 Running 1 (27m ago) 61m
kube-system kube-controller-manager-k8s 1/1 Running 1 (27m ago) 61m
kube-system kube-proxy-8xrdl 1/1 Running 1 (27m ago) 60m
kube-system kube-scheduler-k8s 1/1 Running 1 (27m ago) 61m
kube-system metrics-server-95d9bdd76-8fxz9 1/1 Running 1 (27m ago) 58m
kube-system nodelocaldns-gl586 1/1 Running 1 (27m ago) 60m
kube-system openebs-localpv-provisioner-64b88c795c-ps96w 1/1 Running 1 (27m ago) 60m
kube-system snapshot-controller-0 1/1 Running 1 (27m ago) 57m
kubesphere-controls-system default-http-backend-68686bdb6-lvf2v 1/1 Running 1 (27m ago) 55m
kubesphere-controls-system kubectl-admin-7df4b6b5b6-fwfpn 1/1 Running 1 (27m ago) 43m
kubesphere-monitoring-system alertmanager-main-0 2/2 Running 0 28m
kubesphere-monitoring-system kube-state-metrics-65c69d6b64-cxz2g 3/3 Running 3 (27m ago) 52m
kubesphere-monitoring-system node-exporter-7l9qw 2/2 Running 2 (27m ago) 52m
kubesphere-monitoring-system notification-manager-deployment-85757c9bfb-hcz9l 2/2 Running 2 (27m ago) 46m
kubesphere-monitoring-system notification-manager-operator-859d858c57-26wnz 2/2 Running 2 (27m ago) 51m
kubesphere-monitoring-system prometheus-k8s-0 2/2 Running 0 51m
kubesphere-monitoring-system prometheus-operator-77d99c696f-8z4nm 2/2 Running 2 (27m ago) 52m
kubesphere-system ks-apiserver-7f7798d54f-w2hgd 1/1 Running 1 (27m ago) 55m
kubesphere-system ks-console-b5cb9b478-xbng2 1/1 Running 1 (27m ago) 55m
kubesphere-system ks-controller-manager-6c97df4459-57rkd 1/1 Running 1 (27m ago) 55m
kubesphere-system ks-installer-865fc48886-vttp4 1/1 Running 1 (27m ago) 60m
[root@k8s kubekey]#
web管理界面: