【k8s实践】 部署Squid

在Docker和k8s中部署Squid实践

前言

动手实践,在k8s中部署Squid,步骤如下:

  • 先在Docker环境中运行Squid, 准备好Squid镜像。
  • 再搭建一个k8s环境,把上一步的docker镜像传进来,再创建对应k8s资源,完成Squid的部署

准备环境

两台Linux VM:

  • 一台Centos/RHEL/RockyLinux 7/8/9,安装Docker, 构建Squid的Docker镜像
  • 一台RockyLinux 9, 用于运行k8s, 部署Squid

1. 在Docker环境中运行Squid, 准备Squid镜像

安装Docker

参考: 安装Docker

准备Squid主配置文件squid.conf

基于rockylinux 9.3的镜像, 通过yum install方式安装Squid, 默认主配置文件路径在容器中的/etc/squid/squid.conf
使用默认的squid.conf, 无法在容器中正常启动Squid。 需要额外添加如下配置,以squid用户启动:

cache_effective_user squid
cache_effective_group squid
cache_log /var/log/squid/cache.log
access_log /var/log/squid/access.log squid

你可以在rocky9.3的容器里装一个squid,把/etc/squid/squid.conf拷出来,再添加以上配置; 或者直接使用如下的squid.conf

#
# Recommended minimum configuration:
#

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8     # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10      # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16     # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12      # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16     # RFC 1918 local private network (LAN)
acl localnet src fc00::/7           # RFC 4193 local private network range
acl localnet src fe80::/10          # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http

#
# Recommended minimum Access Permission confi
在 Kubernetes (K8s) 上部署 Squid 代理服务器,你可以按照以下步骤操作: 1. **创建yaml文件**: 首先,你需要准备一个 YAML 或 JSON 文件,描述了 Squid 的配置和所需的资源。这个文件通常包含基本信息如容器镜像、端口映射、环境变量等。示例文件可能会类似这样: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: squid-deployment spec: replicas: 1 selector: matchLabels: app: squid template: metadata: labels: app: squid spec: containers: - name: squid-container image: squid:latest ports: - containerPort: 3128 env: - name: SQUID_CONFIG_PATH value: /etc/squid/squid.conf volumeMounts: - mountPath: /etc/squid name: config-volume readOnly: true volumes: - name: config-volume configMap: name: squid-configmap ``` 这里假设有一个名为`squid-configmap`的 ConfigMap 存储了 Squid 的配置。 2. **创建ConfigMap**: 如果 Squid 的配置文件不在 Docker 镜像内,需要创建一个 ConfigMap 来管理配置内容。例如,你可以通过命令行创建一个 ConfigMap: ```shell kubectl create configmap squid-configmap \ --from-file=/path/to/squid/config/squid.conf ``` 3. **应用部署**: 使用 `kubectl apply` 命令将上述 YAML 应用于 K8s 集群: ```shell kubectl apply -f squid-deployment.yaml ``` 4. **服务暴露**: 要让用户可以从外部访问 Squid,你需要创建一个 Service 对象,比如一个 ClusterIP 或 LoadBalancer Service。例如: ```yaml apiVersion: v1 kind: Service metadata: name: squid-service spec: type: ClusterIP selector: app: squid ports: - protocol: TCP port: 3128 targetPort: 3128 ``` 然后,运行 `kubectl apply` 创建服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pcj_888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值