Kubernetes
k8s删除Terminating状态的namespace
在k8s中,namespace只有两种状态,Active和Terminating,后者一般比较少见,只有当命名空间被删除,而命名空间下还存在运行的资源时,才会出现terminating状态。当命名空间下资源回收后,命名空间会被自动删除。当也存在一些意外情况,导致已经没有相关资源了,而namespace依然在terminating状态下无法删除,这里介绍一种删除方法。
先执行以下命令,获取namespace信息
kubectl get namespace <terminating-namespace> -o yaml
得到以下信息:
apiVersion: v1
kind: Namespace……
使用rook在k8s管理ceph集群
ceph是一种高度扩展的分布式存储方案,能够提供对象、文件和块存储,也可以为k8s提供持久化存储能力。然而,ceph的集群搭建相对还是计较复杂的,而且既然引入了k8s,何不让k8s为我们管理ceph集群呢?
Rook的出现为上面的问题提供了解决方案。Rook是一个自管理的分布式存储编排系统,可以为k8s提供便利的存储解决方案。Rook本身不提供春初,而是在k8s和存储系统之间提供了适配层,简化了存储系统的部署与维护。接下来我们就来使用Rook在k8s上搭建一套ceph集群。
环境准备
这里我准备了4台机器作为存储的设备。
配置信息:
系统类型
IP
Hostname
磁盘
centos-7……
K8S配置StoregeClass(nfs,ceph-rdb,cephfs,阿里云NAS)
k8s支持多种存储类,本文介绍几种常用的存储类:nfs、ceph rdb、cephfs、阿里云文件存储(NAS)
各存储类的区别详见:存储类
NFS
首先,你需要准备一台nfs服务器,我这里的服务器是:10.0.30.15, path: /data
注意:所有的worker节点需要安装nfs-utils,否则将无法挂载
配置rbac
nfs-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
namespace: nfs
---
kind: ClusterRole
……
二进制方式搭建Kubernetes 1.19.3高可用集群(五)——部署dashboard
本文将介绍在二进制部署的k8s集群中部署dashboar 2.0.4,并解决部署过程中metrics-server无法启动的问题
部署dashboard
首先,根据官方文档来,下载配置文件(官方文档地址:https://github.com/kubernetes/dashboard)
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml -O dashboard-deploy.yaml
由于镜像在国外,下载可能会比较慢,所有我把镜像放到了阿里云上,可以按需替……
二进制方式搭建Kubernetes 1.19.3高可用集群(四)——部署worker节点和网络插件
本文将介绍通过二进制方式部署kubelet、kube-proxy组件以及网络组件calico的安装
部署kubelet(worker节点)
创建bootstrap配置文件
将kubeadm放到bin目录下,方便执行命令
cp master/kubeadm /usr/local/bin
#进入我们原先制作admin证书的目录
cd target/admin
#创建token
export BOOTSTRAP_TOKEN=$(kubeadm token create --description kubelet-bootstrap-token --groups system:bootstra……
二进制方式搭建Kubernetes 1.19.3高可用集群(三)——部署controller-manager和scheduler
本文将介绍通过二进制方式部署controller-manager和scheduler组件
部署kubectl(master节点)
kubectl是kubernetes集群的命令行管理工具,它默认从 ~/.kube/config 文件读取 kube-apiserver 地址、证书、用户名等信息。
生成admin证书和私钥
kubectl 与 apiserver https 安全端口通信,apiserver 对提供的证书进行认证和授权。
kubectl 作为集群的管理工具,需要被授予最高权限。这里创建具有最高权限的 admin 证书。
#新建一个目录存放admin的证书
cd target &……
二进制方式搭建Kubernetes 1.19.3高可用集群(二)——部署ETCD集群和api-server
本文将介绍通过二进制方式部署etcd集群和api-server
部署etcd集群
生成etcd证书和私钥
#新建一个目录存放etcd的证书
cd target && mkdir etcd && cd etcd
#生成证书配置文件
cat > etcd-csr.json<<EOF
{
"CN": "etcd",
"hosts": [
"127.0.0.1",
"10.0.40.101",
"10.0.40.102",
"10.0.40.103"
],
"key": {
"algo": "rsa",
"size": 2048
}……
二进制方式搭建Kubernetes 1.19.3高可用集群(一)——环境准备
本文将通过二进制来搭建Kubernetes v1.19.3高可用集群,网络插件选择calico,kube-proxy使用ipvs模式
环境准备
centos7虚拟机11台,配置如下
系统类型
IP
角色
Hostname
centos-7.7
10.0.40.101
etcd
etcd-40-101.jieee.xyz
centos-7.7
10.0.40.102
etcd
etcd-40-102.jieee.xyz
centos-7.7
10.0.40.103
etcd
etcd-40-103.jieee.xyz
centos-7.7
10.0.50.101
master
kube-m-5……
Kubernetes dashboard v2.0.0安装
安装完k8s 1.16集群后,再安装dashboard v1.* 发现不兼容,于是折腾了这个v2.0.0的教程
k8s dashboard v2.0.0效果展示
a
V2.0.0对比V1.*的优势
监控信息不需要通过Heapster来提供,而是通过Metrics Server来提供,Metrics Scraper服务来采集,不需要单独维护Heapster
支持暗黑主题
监控图显示更细节化
编辑支持yaml和json
下载官方配置并执行,目前最新版本为2.0.0-rc1
$ wget -O dashboard.yaml https://raw.githubusercontent.com/kub……
Kubernetes使用Ingress nginx暴露服务并配置证书
部署配置Ingress
从官网获取配置文件并执行
$ wget -O ingress.yaml https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
$ kubectl apply -f ingress.yaml
ingress默认配置没有service-ip,重启之后ingress pod就会改变,因此我们需要通过NodePort或者service将ingress的ip固定下来,我这里使用service实现
$ cat ingress-svc.yaml <<……