链接:https://github.com/easzlab/kubeasz
部署步骤
按照示例example/hosts.multi-node的节点配置,准备4台虚机,搭建一个多主高可用集群。
1.基础系统配置
- 推荐内存2G/硬盘30G以上
- 最小化安装CentOS 7 Minimal
- 配置基础网络、更新源、SSH登录等
2.在每个节点安装依赖工具
- yum makecache fast
- yum update
- yum install python -y
3.在ansible控制端安装及准备ansible
- ssh-keygen
- ssh-copy-id -i /root/.ssh/id_rsa.pub root@IP
- yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- yum install ansible -y
- yum install git python-pip -y
- pip install pip --upgrade -i Simple Index
- pip install ansible==2.6.18 netaddr==0.7.19 -i Simple Index
4.在ansible控制端安装
下载工具脚本easzup,举例使用kubeasz版本2.0.2
export release=2.0.2
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup
chmod +x ./easzup
# 使用工具脚本下载 ./easzup -D
cd /etc/ansible && cp example/hosts.multi-node hosts
根据实际情况更改hosts内容
验证ansible : ansible all -m ping
5.在ansible控制端编排k8s安装
# 分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.containerd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
# 一步安装 #
ansible-playbook 90.setup.yml
dashboard
安装部署
# 部署dashboard 主yaml配置文件
$ kubectl apply -f /etc/ansible/manifests/dashboard/kubernetes-dashboard.yaml
# 创建可读可写 admin Service Account
$ kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
# 创建只读 read Service Account
$ kubectl apply -f /etc/ansible/manifests/dashboard/read-user-sa-rbac.yaml
验证
# 查看pod 运行状态
kubectl get pod -n kube-system | grep dashboard
kubernetes-dashboard-7c74685c48-9qdpn 1/1 Running 0 22s
# 查看dashboard service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard NodePort 10.68.219.38 <none> 443:24108/TCP 53s
# 查看集群服务
kubectl cluster-info|grep dashboard kubernetes-dashboard is running at https://192.168.1.1:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
# 查看pod 运行日志
kubectl logs kubernetes-dashboard-7c74685c48-9qdpn -n kube-system
登录
使用https://NodeIP:NodePort 方式访问 dashboard,支持两种登录方式:Kubeconfig、令牌(Token)
选择“令牌(Token)”方式登录,复制下面输出的admin token 字段到输入框(admin)
# 创建Service Account 和 ClusterRoleBinding
$ kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml
# 获取 Bearer Token,找到输出中 ‘token:’ 开头那一行
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
选择“令牌(Token)”方式登录,复制下面输出的read token 字段到输入框(只读)
# 创建Service Account 和 ClusterRoleBinding
$ kubectl apply -f /etc/ansible/manifests/dashboard/read-user-sa-rbac.yaml
# 获取 Bearer Token,找到输出中 ‘token:’ 开头那一行
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep read-user | awk '{print $1}')
Metrics Server
从 v1.8 开始,资源使用情况的度量(如容器的 CPU 和内存使用)可以通过 Metrics API 获取;前提是集群中要部署 Metrics Server,它从Kubelet 公开的Summary API采集指标信息
安装
已在上面安装成功 , ansible-play /etc/ansible/07.cluster-addon.yml
验证
[root@zxl0 tasks]# kubectl get apiservice |grep metrics
v1beta1.metrics.k8s.io kube-system/metrics-server True 35m
[root@zxl0 tasks]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
10.2.16.101 57m 1% 1658Mi 53%
10.2.16.102 85m 2% 1731Mi 56%
10.2.16.103 58m 1% 1193Mi 38%
10.2.16.104 37m 0% 1248Mi 40%
安装 KubeSphere
前提条件
- Kubernetes 版本 : 1.13.0 ≤ K8s version < 1.16;
- Helm 版本: 2.10.0 ≤ Helm < 3.0.0,且已安装了 Tiller(v3.0 支持 Helm v3);参考 如何安装与配置 Helm;
- 集群的可用 CPU > 1 C,可用内存 > 2 G;且集群能够访问外网
- 集群已有默认的存储类型(StorageClass);
安装helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 777 get_helm.sh
./get_helm.sh
#如在线安装不成功,下载离线包 https://download.csdn.net/download/zhangxueleishamo/12846302
tar -zxvf helm-v3.3.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/
helm completion bash > .hermrc ;echo "source .helmrc" >> .bashrc
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
helm install nginx stable/nginx-ingress
安装tiller
kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller --skip-refresh --tiller-image registry.cn-shanghai.aliyuncs.com/rancher/tiller:v2.15.1
helm list
kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v3.0.0/deploy/kubesphere-installer.yaml
kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v3.0.0/deploy/cluster-configuration.yaml
其他命令
删除pod
#查看所有pod:
kubectl get pods --all-namespaces
#查看指定namespace的pod名称:
kubectl get pod -n kubesphere-system
#删除指定的pod :
kubectl delete pod (podname) -n (namespace)