![](https://img-blog.csdnimg.cn/51b3c680c5ed4a5cb5de3304a47be06f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Kubernetes企业实战 (已完结)
文章平均质量分 80
本专栏主要内容:会持续更新 1.安装篇:kubeadm和二进制包安装 2.基础篇:基本概念、服务发布、配置管理 3.进阶篇:存储、资源调度、准入和权限控制 4.高级篇:存储进阶、Operator、Helm 5.运维篇:EFK、Prometheus、Ingress、DevOps CI/CD、网络策略
Raymond运维
专注于Linux运维自动化、云原生、SRE、DevOps等领域
展开
-
k59.第二章 基于二进制包安装kubernetes v1.23 --集群部署
1.安装说明本文章将演示CentOS 7二进制方式安装高可用k8s 1.17+,相对于其他版本,二进制安装方式并无太大区别,只需要区分每个组件版本的对应关系即可。生产环境中,建议使用小版本大于5的Kubernetes版本,比如1.19.5以后的才可用于生产环境。2.基本环境配置表1-1 高可用Kubernetes集群规划角色机器名机器配置ip地址安装软件master1k8s-master01.example.local2C4G172.31.3.101chrony原创 2022-06-12 10:00:00 · 295 阅读 · 0 评论 -
k58.第一章 基于kubeadm安装kubernetes v1.23 -- 集群部署
1.k8s高可用架构解析2.基本环境配置Kubeadm安装方式自1.14版本以后,安装方法几乎没有任何变化,此文档可以尝试安装最新的k8s集群,centos采用的是7.x版本K8S官网:https://kubernetes.io/docs/setup/最新版高可用安装:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/表1-1 高可用Kubernetes集群规划原创 2022-06-12 10:00:00 · 1175 阅读 · 0 评论 -
k57.第三章 k8s基础篇--containerd基础入门
1.Containerd安装1.1 Containerd基于镜像仓库安装1.1.1 安装步骤安装docker-ce:#Centos[root@rocky8 ~]# yum -y install yum-utils[root@rocky8 ~]# yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo[root@rocky8 ~]# sed -i '原创 2022-06-12 10:00:00 · 264 阅读 · 0 评论 -
k56.第十九章 K8s运维篇-集群升级 -- kubernetes v1.22 二进制包安装方式升级(二)
2.kubernetes 二进制包安装方式升级把yaml文件先备份了[root@k8s-master01 ~]# mkdir bak[root@k8s-master01 ~]# mv *.yaml bak/[root@k8s-master01 ~]# ls bak/admin.yaml bootstrap.secret.yaml calico-etcd.yaml components.yaml coredns.yaml recommended.yaml2.1 升级etcdhttps原创 2022-06-12 10:00:00 · 237 阅读 · 0 评论 -
k55.第十九章 K8s运维篇-集群升级 -- kubeadm v1.22 安装方式升级(一)
1.kubeadm 安装方式升级升级k8s集群必须 先升级kubeadm版本到目的k8s版本,也就是说kubeadm是k8s升级的准升证。1.1 升级准备在k8s的所有master节点进行组件升级,将管理端服务kube-controller-manager、kube-apiserver、kube-scheduler、kube-proxy进行版本升级。1.1.1 验证当前k8s master版本[root@k8s-master01 ~]# kubeadm versionkubeadm versio原创 2022-06-12 10:00:00 · 419 阅读 · 0 评论 -
k54.第十六章 K8s运维篇-服务发布Ingress进阶 -- 升级到kubernetes v1.22版本
1.Ingress Nginx入门Ingress: Ingress-nginx:kubernetes官方维护的ingress Nginx-ingress:nginx官方维护的ingressIngress-nginx的官方文档:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/Nginx-ingress的官方文档:https://docs.nginx.com/n原创 2022-06-12 10:00:00 · 272 阅读 · 0 评论 -
k53.第二章 基于二进制包安装kubernetes v1.22 --集群部署
1.安装说明本文章将演示CentOS 7二进制方式安装高可用k8s 1.17+,相对于其他版本,二进制安装方式并无太大区别,只需要区分每个组件版本的对应关系即可。生产环境中,建议使用小版本大于5的Kubernetes版本,比如1.19.5以后的才可用于生产环境。2.基本环境配置表1-1 高可用Kubernetes集群规划角色机器名机器配置ip地址安装软件master1k8s-master01.example.local2C4G172.31.3.101chrony原创 2022-06-12 10:00:00 · 112 阅读 · 0 评论 -
k52.第一章 基于kubeadm安装kubernetes v1.22 -- 集群部署
1.k8s高可用架构解析2.基本环境配置Kubeadm安装方式自1.14版本以后,安装方法几乎没有任何变化,此文档可以尝试安装最新的k8s集群,centos采用的是7.x版本K8S官网:https://kubernetes.io/docs/setup/最新版高可用安装:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/表1-1 高可用Kubernetes集群规划原创 2022-06-12 10:00:00 · 179 阅读 · 0 评论 -
k51.第十九章 K8s运维篇-集群升级 -- kubernetes v1.21 二进制包安装方式升级(二)
2.kubernetes 二进制包安装方式升级把yaml文件先备份了[root@k8s-master01 ~]# mkdir bak[root@k8s-master01 ~]# mv *.yaml bak/[root@k8s-master01 ~]# ls bak/admin.yaml bootstrap.secret.yaml calico-etcd.yaml components.yaml coredns.yaml recommended.yaml2.1 升级etcdhttps原创 2022-06-12 10:00:00 · 144 阅读 · 0 评论 -
k50.第十九章 K8s运维篇-集群升级 -- kubeadm v1.21 安装方式升级(一)
1.kubeadm 安装方式升级升级k8s集群必须 先升级kubeadm版本到目的k8s版本,也就是说kubeadm是k8s升级的准升证。1.1 升级准备在k8s的所有master节点进行组件升级,将管理端服务kube-controller-manager、kube-apiserver、kube-scheduler、kube-proxy进行版本升级。1.1.1 验证当前k8s master版本[root@k8s-master01 ~]# kubeadm versionkubeadm versio原创 2022-06-12 10:00:00 · 215 阅读 · 0 评论 -
k49.第十九章 K8s运维篇-集群升级 -- kubernetes v1.20 二进制包安装方式升级(二)
2.kubernetes 二进制包安装方式升级把yaml文件先备份了[root@k8s-master01 ~]# mkdir bak[root@k8s-master01 ~]# mv *.yaml bak/[root@k8s-master01 ~]# ls bak/admin.yaml bootstrap.secret.yaml calico-etcd.yaml components.yaml coredns.yaml recommended.yaml2.1 升级etcdhttps原创 2022-06-12 10:00:00 · 249 阅读 · 0 评论 -
k48.第十九章 K8s运维篇-集群升级 -- kubeadm v1.20 安装方式升级(一)
1.kubeadm安装方式升级升级k8s集群必须 先升级kubeadm版本到目的k8s版本,也就是说kubeadm是k8s升级的准升证。1.1 升级准备在k8s的所有master节点进行组件升级,将管理端服务kube-controller-manager、kube-apiserver、kube-scheduler、kube-proxy进行版本升级。1.1.1 验证当前k8s master版本[root@k8s-master01 ~]# kubeadm versionkubeadm version原创 2022-06-12 10:00:00 · 202 阅读 · 0 评论 -
k47.第十八章 K8s运维篇-网络策略
1.什么是NetworkPolicy?https://kubernetes.io/docs/concepts/services-networking/network-policies/如果你希望在 IP 地址或端口层面(OSI 第 3 层或第 4 层)控制网络流量, 则你可以考虑为集群中特定应用使用 Kubernetes 网络策略(NetworkPolicy)。 NetworkPolicy 是一种以应用为中心的结构,允许你设置如何允许 Pod 与网络上的各类网络“实体” (我们这里使用实体以避免过度使用原创 2022-06-12 10:00:00 · 193 阅读 · 0 评论 -
k46.第十七章 K8s运维篇-DevOps 持续集成 持续部署 (六)
2.6 Docker镜像高级优化及自动化构建建议2.7 Jenkins生产环境和UAT环境流水线设计def get_tags = [ "bash", "-c", "curl -s -u 'HarborUsername:HarborPassword' -X GET -H 'Content-Type: application/json' '${HARBOR_ADDRESS}/api/repositories/$HARBOR_PROJECT%2F${ImageName}/tags' | jq .[].n原创 2022-06-12 10:00:00 · 160 阅读 · 0 评论 -
k45.第十七章 K8s运维篇-DevOps 持续集成 持续部署 (五)
2.4 Jenkins自动化构建Java应用[root@k8s-master01 ~]# mkdir /opt/m2[root@k8s-master01 ~]# ls /opt/m2[root@k8s-master01 ~]# ls repository.tar.gz repository.tar.gz[root@k8s-master01 ~]# tar xf repository.tar.gz -C /opt/m2/[root@k8s-master01 ~]# ls /opt/原创 2022-06-12 17:00:00 · 405 阅读 · 3 评论 -
k44.第十七章 K8s运维篇-DevOps 持续集成 持续部署 (四)
2.DevOps-持续集成 持续部署实战2.1 基于K8s的动态Jenkins Slave[root@jenkins-server spring-cloud-demo]# vim DockerfileFROM registry.cn-hangzhou.aliyuncs.com/raymond9/maven:3.5.3COPY target/*.jar /optEXPOSE 8080[root@jenkins-server spring-cloud-demo]# g原创 2022-06-12 17:00:00 · 181 阅读 · 0 评论 -
k43.第十七章 K8s运维篇-DevOps 持续集成 持续部署 (三)
1.9 Jenkins BlueOcean入门pipeline { agent any stages { stage('test stages') { parallel { stage('test stages') { steps { sh 'echo "step 1"' } } stage('test stages2') {原创 2022-06-12 17:00:00 · 166 阅读 · 0 评论 -
k42.第十七章 K8s运维篇-DevOps 持续集成 持续部署 (二)
1.4 Jenkins变量使用pipeline { agent any stages { stage('Hello') { steps { sh """ env """ } } }}#常用内置变量JENKINS_URLBUILD_IDHOSTNAMEBUILD_NUMBER原创 2022-06-12 10:00:00 · 149 阅读 · 0 评论 -
k41.第十七章 K8s运维篇-DevOps 持续集成 持续部署 (一)
1.DevOps-持续集成 持续部署入门1.1 Jenkins CICD介绍持续集成:帮助开发人员更加频繁的将代码合并到共享分支或主干中,合并之后会自动触发构建应用,运行不同级别的代码扫描(sonarqube)和自动化测试(单元和集成测试)。持续交付:将通过集成测试的代码合并到一个可以随时部署到生产环境的代码库。持续部署:持续交付的延伸,就是将代码自动发布到生产环境中。npm installnpm run build1、 自动构建流水线2、 无需构建,选择镜像发版Jenkins、GitRu原创 2022-06-11 10:00:00 · 227 阅读 · 0 评论 -
k40.第十六章 K8s运维篇-服务发布Ingress进阶 (二)
5.零宕机发布应用必备知识:Pod三种探针5.1 Pod探针StartupProbe:k8s1.16版本后新加的探测方式,用于判断容器内应用程序是否已经启动。如果配置了startupProbe,就会先禁止其他的探测,直到它成功为止,成功后将不在进行探测。LivenessProbe:用于探测容器是否运行,如果探测失败,kubelet会根据配置的重启策略进行相应的处理。若没有配置该探针,默认就是success。ReadinessProbe:一般用于探测容器内的程序是否健康,它的返回值如果为succes原创 2022-06-10 10:00:00 · 186 阅读 · 0 评论 -
k39.第十六章 K8s运维篇-服务发布Ingress进阶 (一)
1.Ingress Nginx入门Ingress: Ingress-nginx:kubernetes官方维护的ingress Nginx-ingress:nginx官方维护的ingressIngress-nginx的官方文档:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/Nginx-ingress的官方文档:https://docs.nginx.com/n原创 2022-06-09 10:00:00 · 183 阅读 · 0 评论 -
k38.第十五章 K8s运维篇-Prometheus监控 (四)
3.Alertmanager告警实战3.1 Alertmanager配置文件解析https://prometheus.io/docs/alerting/latest/configuration/https://github.com/prometheus/alertmanager/blob/main/doc/examples/simple.ymlhttps://gitee.com/raymond9/k8s/blob/master/prometheus-operator/alertmanager.yam原创 2022-06-08 10:00:00 · 119 阅读 · 0 评论 -
k37.第十五章 K8s运维篇-Prometheus监控 (三)
2.5 Prometheus静态配置首先创建一个空文件,然后通过该文件创建一个Secret,那么这个Secret即可作为Prometheus的静态配置:[root@k8s-master01 ~]# touch prometheus-additional.yaml[root@k8s-master01 ~]# kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitori原创 2022-06-07 10:00:00 · 221 阅读 · 0 评论 -
k36.第十五章 K8s运维篇-Prometheus监控 (二)
2.Prometheus实践2.1 云原生应用Etcd监控测试访问Etcd Metrics接口:# curl -s --cert /etc/kubernetes/pki/etcd/etcd.pem --key /etc/kubernetes/pki/etcd/etcd-key.pem https://YOUR_ETCD_IP:2379/metrics -k | tail -1promhttp_metric_handler_requests_total{code="503"} 0[root@k原创 2022-06-06 10:00:00 · 202 阅读 · 0 评论 -
k35.第十五章 K8s运维篇-Prometheus监控 (一)
1.Prometheus监控入门1.1 什么是PrometheusPrometheus是一个开源的系统健康和报警框架,其本身也是一个时序列数据库(TSDB),它的设计灵感来源于Google的Borgmon,就像Kubernetes是基于Borg系统开源的。Prometheus是由SoundCloud的Google前员工设计并开源的,官方网站:https://prometheus.io/。Prometheus于2016年加入云原生计算基金会(Cloud Native Computing Foundati原创 2022-06-05 10:00:00 · 180 阅读 · 0 评论 -
k34.第十四章 K8s运维篇-K8s容器日志收集
1. K8s需要收集哪些日志?2.收集日志常用的技术栈3.ES+Fluentd+Kibana3.1 ES+Fluentd+Kibana架构解析3.2 使用EFK收集控制台日志3.2.1 部署Elasticsearch+Fluentd+Kibana本次实验的环境如下,服务器可用资源2核4G以上:[root@k8s-master01 ~]# kubectl get nodesNAME STATUS ROLES AGE VERSI原创 2022-06-04 10:00:00 · 340 阅读 · 0 评论 -
k33.第十三章 K8s高级篇-中间件容器化及Helm (四)
12.小试牛刀:StatefulSet安装RabbitMQ集群[root@k8s-master01 ~]# git clone https://gitee.com/raymond9/k8s.git[root@k8s-master01 ~]# cd k8s/[root@k8s-master01 k8s]# lscanary efk-7.10.2 fklek gitrunner k8s-efk knative loki o原创 2022-06-03 10:00:00 · 222 阅读 · 0 评论 -
k32.第十三章 K8s高级篇-中间件容器化及Helm (三)
10.Helm常用函数的使用10.1 字符串函数http://masterminds.github.io/sprig/strings.htmltrim#trim函数从字符串的两边移除空格:[root@k8s-master01 helm-test]# vim templates/deployment.yaml apiVersion: apps/v1kind: Deploymentmetadata: name: {{ include "helm-test.fullname" . }}原创 2022-06-02 10:00:00 · 249 阅读 · 0 评论 -
k31.第十三章 K8s高级篇-中间件容器化及Helm (二)
6.2 Redis集群使用和扩容[root@k8s-master01 redis-cluster-operator]# kubectl get svc -n redis-cluster NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEexample-distributedrediscluster ClusterIP 10.106.22原创 2022-06-01 10:00:00 · 230 阅读 · 0 评论 -
k30.第十三章 K8s高级篇-中间件容器化及Helm (一)
1.容器化中间件说明2.部署应用至K8s通用步骤3. 部署单实例中间件至K8s1、找到官方镜像:https://hub.docker.com/2、确认需要的配置:环境变量或配置文件3、选择部署方式:Deployment或其他的4、配置访问:TCP或HTTP[root@k8s-master01 ~]# kubectl get pod -n kube-system NAME READY STATUS RES原创 2022-05-31 10:00:00 · 484 阅读 · 0 评论 -
k29.第十二章 K8s高级篇-云原生存储及存储进阶 (三)
9.PVC扩容文件共享类型的PVC扩容需要k8s 1.15+块存储类型的PVC扩容需要k8s 1.16+PVC扩容需要开启ExpandCSIVolumes,新版本的k8s已经默认打开了这个功能,可以查看自己的k8s版本是否已经默认打开了该功能:[root@k8s-master01 ~]# kube-apiserver -h |grep ExpandCSIVolumes ExpandCSIVo原创 2022-05-30 10:00:00 · 310 阅读 · 0 评论 -
k28.第十二章 K8s高级篇-云原生存储及存储进阶 (二)
6.Ceph Dashboard和客户端工具安装6.1 安装ceph客户端工具[root@k8s-master01 examples]# cd rook/deploy/examples[root@k8s-master01 examples]# kubectl create -f toolbox.yaml -n rook-ceph deployment.apps/rook-ceph-tools created[root@k8s-master01 examples]# kubectl get pod原创 2022-05-29 10:00:00 · 214 阅读 · 0 评论 -
k27.第十二章 K8s高级篇-云原生存储及存储进阶 (一)
1.什么是StorageClass和CSIVolume回顾volumes: - name: share-volume emptyDir: {} #medium: Memory - name: timezone hostPath: path: /etc/timezone type: File - name: nfs-volume nfs: s原创 2022-05-28 10:00:00 · 192 阅读 · 0 评论 -
k26.第十一章 K8s进阶篇-细粒度权限控制 (二)
2. RBAC实践创建一个名为deployment-clusterrole的clusterrole a) 该clusterrole只允许创建Deployment、Daemonset、Statefulset的create操作在名字为app-team1的namespace下创建一个名为cicd-token的serviceAccount,并且将上一步创建clusterrole的权限绑定到该serviceAccount创建clusterrole[root@k8s-master01 ~]#原创 2022-05-27 10:00:00 · 254 阅读 · 0 评论 -
k25.第十一章 K8s进阶篇-细粒度权限控制 (一)
1.K8s权限管理 RBAC1.1 什么是RBAC?1.2 RBAC配置解析https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/1.2.1 使用 RBAC 鉴权基于角色(Role)的访问控制(RBAC)是一种基于组织中用户的角色来调节控制对 计算机或网络资源的访问的方法。RBAC 鉴权机制使用 rbac.authorization.k8s.io API 组 来驱动鉴权决定,允许你通过 Kubernetes API 动原创 2022-05-26 10:00:00 · 193 阅读 · 0 评论 -
k24.第十章 K8s进阶篇-准入控制
1.K8s资源配额 ResourceQuota1.1 为什么生产一定要用ResourceQuota1.2 资源配额配置解析apiVersion: v1kind: ResourceQuotametadata: name: resource-test labels: app: resourcequotaspec: hard: pods: 50 requests.cpu: 0.5 requests.memory: 512Mi limits.原创 2022-05-07 10:00:00 · 302 阅读 · 0 评论 -
k23.第九章 K8s进阶篇-高级调度计划任务临时容器 (四)
5.K8s 亲和力 Affinity5.1 生产环境依旧存在的高可用率问题Pod和节点之间的关系:某些Pod优先选择有ssd=true标签的节点,如果没有在考虑部署到其它节点;某些Pod需要部署在ssd=true和type=physical的节点上,但是优先部署在ssd=true的节点上;Pod和Pod之间的关系:同一个应用的Pod不同的副本或者同一个项目的应用尽量或必须不部署在同一个节点或者符合某个标签的一类节点上或者不同的区域;(反亲和力)相互依赖的两个Pod尽量或必须原创 2022-05-06 10:00:00 · 470 阅读 · 0 评论 -
k22.第九章 K8s进阶篇-高级调度计划任务临时容器 (三)
4.K8s污点和容忍 Taint&Toleration4.1 Taint和Toleration设计理念容忍和污点Taint和Toleration:设计理念:Taint在一类服务器上打上污点,让不能容忍这个污点的Pod不能部署在打了污点的服务器上。Toleration是让Pod容忍节点上配置的污点,可以让一些需要特殊配置的Pod能够调用到具有污点和特殊配置的节点上。官方文档:https://kubernetes.io/docs/concepts/scheduling-eviction/tai原创 2022-05-05 10:00:00 · 326 阅读 · 0 评论 -
k21.第九章 K8s进阶篇-高级调度计划任务临时容器 (二)
3.K8s临时容器 EphemeralContainer3.1 从镜像角度探讨容器安全3.2 临时容器3.3 开启临时容器[root@k8s-master01 ~]# vim /lib/systemd/system/kube-apiserver.service... --feature-gates=EphemeralContainers=true \ #添加这行 --requestheader-username-headers=X-Remote-User原创 2022-05-04 10:00:00 · 406 阅读 · 0 评论 -
k20.第九章 K8s进阶篇-高级调度计划任务临时容器 (一)
1.K8s计划任务 Job&CronJob1.1 Job1.1.1 Job可以干什么1.1.2 Job配置参数详解apiVersion: batch/v1kind: Jobmetadata: labels: job-name: echo name: echo namespace: defaultspec: suspend: true # 1.21+ ttlSecondsAfterFinished: 100 backoffLimit: 4 comp原创 2022-05-03 10:00:00 · 536 阅读 · 1 评论