Kubernetes学习目录
初识kubernetes
kubernetes之“Hello World”
kubeadm部署k8s集群
安装harbor
kubernetes安装dashboard
Liveness, Readiness与Startup Probes
kubernetes POD控制器
RS与Deployment
Service资源
K8s部署Ingress Traefik
traefik配置dashboard https访问
Kubernetes部署nginx-ingress使用
Kubernetes的ConfigMap使用
Kubernetes的Secret使用
Kubernetes的Volume使用
Kubernetes的PV、PVC使用
Kubernetes集群的污点与容忍
Kubernetes安全之kubeconfig访问控制
Kubernetes的helm部署
Helm部署dashboard
k8s部署prometheus、grafana监控
二进制部署高可用集群
日志收集
k8s监控系统
...
容器运行hexo
hexo运行脚本docker rm -f hexo docker run -d --name=hexo --restart always -p 80:4000 \-v /data/hexo/source:/opt/blog/source \-v /root/.ssh/id_rsa:/root/.ssh/id_rsa \-v /data/hexo/_config.yml:/opt/blog/_config.yml \-v /data/hexo/_config.butterfly.yml:/opt/blog/_config.butterfly.yml \-v /data/hexo/themes/butterfly/source/img:/opt/blog/themes/butterfly/source/img \heweiqun/hexo:202205121314-node-12.22.7
butterfly主题使用:Butterfly 安裝文檔
/opt/blog/source 本地需要_posts目录 ...
Docker buildx构建多架构镜像
概述Docker Buildx 是一个 CLI 插件,它扩展了 docker 命令,完全支持Moby BuildKit 构建器工具包提供的功能。Docker 19.03版本以上都支持buildx。
启动Buildx设置buildx为默认构建器可以使用 docker buildx build 命令使用 BuildKit 构建镜像
# docker buildx install
创建builder实例由于Docker默认的builder实例不支持同时指定多个–platform,所以必须先创建一个新的builder实例
适用于国内环境# docker buildx create --use --name=builder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:masterbuilder-cn 使用新创建的builder实例# docker buildx use builder-cn # docker buildx lsNAME/NODE DRIVER/END ...
kubernetes安装部署sonarqube
sonarqube部署安装镜像准备postgres:11.6sonarqube:9.0.0-communitybusybox:1.27.1
安装postgressonarqube7.9及以上使用postgres为数据库使用
PVCDeploymentServiceapiVersion: v1kind: PersistentVolumeClaimmetadata: name: sonar-mysql namespace: demospec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs volumeMode: Filesystemkind: DeploymentapiVersion: apps/v1metadata: name: sonar-db namespace: demo labels: app: sonar-db name: sonar-dbspec: replicas: 1 selector: m ...
kubernetes实现jenkins slave动态伸缩
kubernetes实现jenkins slave动态伸缩
在Kubernetes中使用Jenkins的优点:
Master服务高可用:当Jenkins Master出现故障时,Kubernetes 会自动创建一个新的Jenkins Master容器,并且将Volume分配给新创建的容器,保证数据不丢失,从而达到集群服务高可用。
Slave动态伸缩:合理使用资源,每次运行Job时,会自动创建一个Jenkins Slave,Job完成后,Slave自动注销并删除容器,资源自动释放,而且Kubernetes会根据每个资源使用情况,动态分配Slave到空闲的节点上创建,降低出现因某节点资源利用率高,还排队等待在该节点的情况。
扩展性好:当Kubernetes集群的资源严重不足而导致Job排队等待时,可以很容易的添加一个Kubernetes Node到集群中,从而实现扩展。
Kubernetes搭建jenkins集群
当Jenkins Master 接收到Build请求时,会根据配置的Label动态创建一个运行在Pod中的Jenkins Slave并注册到Master上,当运行完J ...
kubeadm更新证书
kubeadm 默认证书为一年,一年过期后,会导致api service不可用,使用过程中会出现:x509: certificate has expired or is not yet valid.
查看集群版本信息# kubeadm versionkubeadm version: &version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:47:53Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}
查看集群证书过期时间# kubeadm alp ...
Traefik 2.x版本
资源配置清单CRDRBACConfigMapDaemonSetMiddlewareServiceIngressCRD 自定义资源二次开发能力来扩展 Kubernetes API,通过 CRD 我们可以向 Kubernetes API 中增加新资源类型,而不需要修改 Kubernetes 源码来创建自定义的 API server,该功能大大提高了 Kubernetes 的扩展能力
apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata: name: ingressroutes.traefik.containo.usspec: group: traefik.containo.us version: v1alpha1 names: kind: IngressRoute plural: ingressroutes singular: ingressroute scope: Namespaced---apiVersion: apiextensions.k8s.io/v ...
Gitlab+Drone对接Kubernetes实现自动化
gitlab创建OAuth应用创建一个GitLab OAuth应用程序。使用者密钥和使用者密钥用于授权访问GitLab资源
授权回调URL必须与以下格式和路径匹配,并且必须使用确切的服务器方案和主机
填写名称(name),回调地址(Redirect URI),勾选api与read_user权限
配置gitlab出站请求
gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录配置OutBound Request
使用管理员账号登录 setting => network => Outbound requests
Expand-勾选Allow requests to the local network from web hooks and services
创建共享秘密
创建一个共享密钥,以验证runner与drone服务器之间的通信
# openssl rand -hex 16d065db69f7dcc35bd6a0658a9e8b4201
安装drone-server ...
k8s部署consul集群
准备资源配置清单
consul.yaml
# vim consul.yamlapiVersion: apps/v1kind: StatefulSetmetadata: name: consul namespace: demo labels: app: consul component: serverspec: serviceName: consul replicas: 3 selector: matchLabels: app: consul component: server template: metadata: labels: app: consul component: server spec: imagePullSecrets: - name: harbor volumes: - name: host-time hostPath: path: /etc/localtime - name: c ...
k8s对接nfs存储
nfs-client-provisioner,它可以使用现有的和已配置的NFS服务器来通过持久卷声明来动态供应Kubernetes持久卷使用sig-storage-lib-external-provisioner的开发nfs-subdir-external-provisioner进行配置
安装nfs每个slave节点安装nfs
# yum install -y nfs-utils
安装storage class准备资源清单
rbac
apiVersion: v1kind: ServiceAccountmetadata: name: nfs-client-provisioner namespace: kube-system---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: nfs-client-provisioner-runnerrules: - apiGroups: [""] resources: ["persistentvolumes&qu ...