引言

Kubernetes(简称K8s)是一款开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。Jenkins是一个开源的自动化服务器,广泛应用于持续集成和持续部署(CI/CD)流程。本文将介绍如何轻松掌握K8s集群,并使用Jenkins实现自动化运维。

K8s集群搭建

1. 环境准备

  • 确保系统满足K8s的最低要求,如操作系统、内核版本等。
  • 安装Docker,作为容器运行时环境。

2. 安装K8s

以下是在单节点上安装K8s的示例命令:

# 安装K8s相关组件
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# 初始化K8s集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 配置kubectl工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3. 部署网络插件

选择一个网络插件(如Calico、Flannel等),以下使用Calico为例:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

安装Jenkins

1. 部署Jenkins镜像

kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
        - containerPort: 8080
EOF

2. 创建持久化存储

kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: "standard"
  hostPath:
    path: /var/lib/jenkins
EOF

kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: "standard"
EOF

3. 配置Jenkins

  • 在浏览器中访问Jenkins的默认端口(8080)。
  • 首次访问时,按照向导完成Jenkins的初始配置。
  • 根据实际需求配置Jenkins插件。

总结

通过以上步骤,您已经成功搭建了一个K8s集群,并部署了Jenkins,实现了自动化运维。接下来,您可以根据实际需求,配置Jenkins的CI/CD流程,实现自动化构建、测试和部署。