这段时间研究Kubernetes(K8S),KubeSphere。运行环境的搭建花了很多时间,踩了很多坑,写此分享避免小伙伴从入门到放弃。希望正在学习的容器化技术的小伙伴们看完此文章能够更加得心应手。
K8S,KubeSphere单机与集群安装与卸载
安装
Docker安装
K8S 安装
Helm安装
OpenEBS安装(推荐Helm安装)
KubeSphere安装
卸载
K8S卸载
Helm卸载
KubeSphere 卸载
安装过程所需文件
安装
K8S帮助文档地址(https://www.kubernetes.org.cn/k8s)
KubeSphere帮助文档地址(https://kubesphere.com.cn/docs/quick-start/minimal-kubesphere-on-k8s/)
服务器配置
操作系统 centos_7_02_64
CPU:2核
内存:8G
硬盘:25G
环境软件
kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
Docker 20.10.0
Helm 2.16.3
OpenEBS 1.5.0
Flannel
Docker安装
1 安装依赖包
sudo yum install-y yum-utils
2 设置镜像的仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3 更新yum软件包索引
yum makecache fast
4 安装docker相关的源 docker-ce 社区 ee 企业版
yum install docker-ce docker-ce-clicontainerd.io
5 配置镜像加速器(下面命令可从注册阿里云服务器,搜索框输入镜像加速 可获取获取到 如下图)
sudomkdir-p /etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://ke9h1pt4.mirror.aliyuncs.com"]}EOFsudosystemctl daemon-reloadsudosystemctl restart docker
5 启动docker
systemctlstartdocker
验证安装(出现下图打印信息安装成功)
docker--version
6 设置开机启动
systemctl enable docker
K8S 安装
1 关闭防火墙 (安装过程中没关能成功)
systemctl stop firewalld
systemctl disable firewalld
2 关闭Linux(必关)
sed-i's/enforcing/disabled/'/etc/selinux/config setenforce 0
3 关闭swap(必关)
swapoff -a#临时关闭sed-ri's/.*swap.*/#&/'/etc/fstab#永久关闭 线上使用这种free-g#验证,swap必须为0
4 K8S 安装相关命令
4.1 添加阿里云yum源
cat
4.2 K8S组件安装
yuminstall-y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
4.3 K8S设置开机启动与启动K8S
systemctlenablekubelet&&systemctl start kubelet
4.4 查看启动状态
systemctl status kubelet
出现这种提示可以不用管,其他安装就不会出现了
Unit kubelet.service entered failed state.
kubelet.service failed.
4.5 创建Master节点,把下面脚本保存到文件master_create.sh,执行命令sh master_create.sh
#!/bin/bashimages=(kube-apiserver:v1.17.3 kube-proxy:v1.17.3kube-controller-manager:v1.17.3kube-scheduler:v1.17.3coredns:1.6.5etcd:3.4.3-0 pause:3.1)forimageNamein${images[@]};dodocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageNamedone
4.6 初始化kubeadm,–apiserver-advertise-address=10.0.2.21,IP地址是master主机的地址,eth0网卡的地址。
kubeadm init \--apiserver-advertise-address=10.0.12.25 \--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \--kubernetes-version v1.17.3 \--service-cidr=10.96.0.0/16 \--pod-network-cidr=10.244.0.0/16
出现下面提示表示初始化成功
Your Kubernetes control-plane has initialized successfully!
4.7 执行4.6步骤成功返回脚本如下
mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudo chown $(id-u):$(id-g)$HOME/.kube/config
4.8 单机与集群节点配置
4.8.1 单机Master隔离解除(主节点也能部署工作任务,单台服务器需要设置,集群不用配置)
kubectl taint nodes--all node-role.kubernetes.io/master-
成功时会输出类似提示:
xxx untainted
4.8.2 集群时需要执行4.6初始化成功返回脚本如下(每台子节点都要执行)
kubeadmjoin10.0.12.25:6443 --token sg47f3.4asffoi6ijb8ljhq \--discovery-token-ca-cert-hash sha256:81fccdd29970cbc1b7dc7f171ac0234d53825bdf9b05428fc9e6767436991bfb
4.8.3子节点join结果查看
kubectl get nodes
4.8.4 4.6步骤返回脚本 kubeadm join … ,token过期重新生成命令
kubeadm token create --print-join-command
4.9安装Pod网络插件
4.9.1 通过脚本链接安装
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flanne/master/Documentation/kube-flannel.yml
4.9.2 通过本地脚本安装
kubectl apply -f kube-flannel.yml
4.9.3 查看安装结果
kubectl get pods --all-namespaces
出现如下图表示网络插件Flannel安装成功
Helm安装
1 helm安装包本地安装
1.1 下载这个版本helm-v2.16.3-linux-amd64.tar.gz
1.2 解压安装包
tar-zxvf helm-v2.16.3-linux-amd64.tar.gz
1.3移动helm的位置
cplinux-amd64/helm/usr/local/bin/
1.4 建helm-rbac.yaml。脚本如下
apiVersion: v1kind: ServiceAccountmetadata: name: tiller namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: tillerroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects:-kind: ServiceAccount name: tiller namespace: kube-system
1.5 运行脚本
kubectl apply-f helm-rbac.yaml
1.6 Helm初始化
helm init--service-account tiller--upgrade-i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.3--skip-refresh
1.7 运行命令,安装校验,成功提示
helm version
1.8 运行状态校验,如下面截图说明启动成功
kubectl get pods-n kube-system
1.9 出现如下,执行下面命令
Error: configmaps is forbidden: User"system:serviceaccount:kube-system:tiller"cannot list resource"configmaps"in APIgroup""in the namespace"kube-system"
kubectl create serviceaccount--namespace kube-system tillerkubectl create clusterrolebinding tiller-cluster-rule--clusterrole=cluster-admin--serviceaccount=kube-system:tillerkubectl patch deploy--namespace kube-system tiller-deploy-p'{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
2 脚本安装Helm(由于网络原因比较难成功)
2.1 创建脚本create_helm.sh
2.2 执行脚本
sh get_helm.sh
OpenEBS安装(推荐Helm安装)
参考https://v2-1.docs.kubesphere.io/docs/zh-CN/appendix/install-openebs/
KubeSphere安装
1 远程脚本链接安装
kubectl apply-f https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml
2 本地脚本链接安装kubesphere-minimal.yaml
kubectl apply-f kubesphere-minimal.yaml
2.1 安装日志打印
kubectl logs-n kubesphere-system $(kubectl get pod-n kubesphere-system-l app=ks-install-o jsonpath='{.items[0].metadata.name}')-f
2.2 安装成功日志打印
2.3 出现下图错误打印忽略
2.4 KubeSphere检验安装结果,如下图为安装成功
kubectl get pods--all-namespaces
2.5 KubeSphere 浏览器登录
卸载
K8S卸载
1 重置
kubeadm reset
2 删除文件
rm-rf$HOME/.kube
Helm卸载
1 执行命令
kubectl get-n kube-system secrets,sa,clusterrolebinding-o name|grep tiller|xargs kubectl-n kube-system deletekubectl get all-n kube-system-l app=helm-o name|xargs kubectl delete-n kube-system
KubeSphere 卸载
1 执行命令
kubectl delete-f kubesphere-minimal.yaml
2 执行脚本
shdel.sh
安装过程所需文件