前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二进制部署k8s教程12 - 部署kube-proxy

二进制部署k8s教程12 - 部署kube-proxy

原创
作者头像
janrs.com
发布2023-03-08 21:11:25
4860
发布2023-03-08 21:11:25
举报

!TIP 二进制部署 k8s - 部署 kube-proxy


转载请注明出处:https://janrs.com/cxys 有任何问题欢迎在底部评论区发言。

部署 kube-proxy

kube-proxy 主要作为 k8s 的网络代理与负载均衡,只负责定时通过 kube-apiserveretcd 数据库获取 service

的信息来做创建网络代理。

同样的,kube-proxy 是需要访问 kube-apiserver 服务的,这就要求 kube-apiserver 需要为其颁发客户端 client 证书。

1.创建 ssl 证书

1-1.创建 csr 请求文件

!NOTE CN 参数表示用户名,必须设置为 k8s 中设定的 system:kube-proxy O 参数表示用户组,必须设置为 k8s 中设定的 system:kube-proxy kube-proxy 同样作为客户端,不需要设置 hosts 参数。

代码语言:shell
复制
cat > /ssl/apiserver-kube-proxy-client-csr.json <<EOF
{
    "CN": "system:kube-proxy",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing",
            "O": "kube-proxy",
            "OU": "system"
        }
    ]
}
EOF
cd /ssl/ && \
cfssl gencert \
-ca=apiserver-ca.pem \
-ca-key=apiserver-ca-key.pem \
-config=ca-config.json \
-profile=client apiserver-kube-proxy-client-csr.json | \
cfssljson -bare apiserver-kube-proxy-client && \
ls apiserver-kube-proxy-client* | \
grep apiserver-kube-proxy-client

2.分发证书

分发到 kube-proxy 节点

代码语言:shell
复制
scp /ssl/apiserver-kube-proxy-client*.pem root@172.16.222.231:/etc/kubernetes/pki/apiserver/

3.创建 kubeconfig

!NOTE kube-proxy 是使用 kubeconfigkube-apiserver 进行通信的。 kubeconfig 配置文件中会包含了 kube-scheduler 的客户端 client 证书信息以及身份信息。 由于已经部署了 master 高可用,所以设置集群参数的时候指定的参数:--server 需要指向 vip 地址。 也就是前面创建的 172.16.222.110,并且端口为 8443

设置集群参数

代码语言:shell
复制
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/apiserver/apiserver-ca.pem \
--embed-certs=true \
--server=https://172.16.222.110:8443 \
--kubeconfig=/etc/kubernetes/kubeconfig/kube-proxy.kubeconfig

设置客户端认证参数

代码语言:shell
复制
kubectl config set-credentials kube-proxy  \
--client-certificate=/etc/kubernetes/pki/apiserver/apiserver-kube-proxy-client.pem \
--client-key=/etc/kubernetes/pki/apiserver/apiserver-kube-proxy-client-key.pem \
--embed-certs=true \
--kubeconfig=/etc/kubernetes/kubeconfig/kube-proxy.kubeconfig

设置上下文

代码语言:shell
复制
kubectl config set-context kube-proxy \
--cluster=kubernetes \
--user=kube-proxy \
--kubeconfig=/etc/kubernetes/kubeconfig/kube-proxy.kubeconfig

设置当前上下文参数

代码语言:shell
复制
kubectl config use-context kube-proxy \
--kubeconfig=/etc/kubernetes/kubeconfig/kube-proxy.kubeconfig

4.创建 kube-proxy 配置文件

!NOTE 在部署 kube-proxynode 服务器操作。

代码语言:shell
复制
cat > /etc/kubernetes/config/kube-proxy.yaml <<EOF
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
bindAddress: '172.16.222.231'
healthzBindAddress: '172.16.222.231:10256'
metricsBindAddress: '127.0.0.1:10249'
bindAddressHardFail: true
clientConnection:
  kubeconfig: /etc/kubernetes/kubeconfig/kube-proxy.kubeconfig
  acceptContentTypes: ""
  burst: 10
  contentType: application/vnd.kubernetes.protobuf
  qps: 5
clusterCIDR: 10.100.0.0/16
enableProfiling: false
mode: "ipvs"
conntrack:
  maxPerCore: 32768
  min: 131072
  tcpCloseWaitTimeout: 1h0m0s
  tcpEstablishedTimeout: 24h0m0s
iptables:
  masqueradeAll: false
  masqueradeBit: 14
  minSyncPeriod: 0s
  syncPeriod: 30s
ipvs:
  excludeCIDRs: null
  minSyncPeriod: 0s
  scheduler: ""
  strictARP: false
  syncPeriod: 30s
nodePortAddresses: null
oomScoreAdj: -999
portRange: ""
udpIdleTimeout: 250ms
winkernel:
  enableDSR: false
  networkName: ""
  sourceVip: ""
EOF

5.创建启动配置文件

代码语言:shell
复制
cat > /etc/kubernetes/config/kube-proxy.conf <<EOF
KUBE_PROXY_OPTS="--alsologtostderr=true \

--logtostderr=false \

--config=/etc/kubernetes/config/kube-proxy.yaml \

--log-dir=/var/log/kubernetes/kube-proxy \
  
--hostname-override=172.16.222.231

--v=2"
EOF

6.创建启动项

代码语言:shell
复制
cat > /usr/lib/systemd/system/kube-proxy.service <<'EOF'
[Unit]
Description=Kubernetes Kube Proxy Service
Documentation=https://github.com/kubernetes/kubernetes
After=network.target

[Service]
WorkingDirectory=/var/lib/kube-proxy/
EnvironmentFile=-/etc/kubernetes/config/kube-proxy.conf
ExecStart=/usr/local/bin/kube-proxy $KUBE_PROXY_OPTS
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

7.启动服务

启动服务

代码语言:shell
复制
systemctl daemon-reload && \
systemctl start kube-proxy

正常启动没有错误,设置开机启动

代码语言:shell
复制
systemctl enable kube-proxy

8.验证服务

!NOTE 执行查看进程运行情况。没有 ERROR 或者 FAILED 等错误正常启动就可以。

代码语言:shell
复制
systemctl status kube-proxy --no-pager -l

9.其他操作

停止服务

代码语言:shell
复制
systemctl stop kube-proxy

查看状态

代码语言:shell
复制
systemctl status kube-proxy --no-pager -l

查看进程运行日志

代码语言:shell
复制
journalctl -l --no-pager  -u kube-proxy

删除进程运行日志

代码语言:shell
复制
rm -rvf /var/log/journal/*

至此。kube-proxy 组件部署成功。

转载请注明出处:https://janrs.com/cxys 有任何问题欢迎在底部评论区发言。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 部署 kube-proxy
    • 1.创建 ssl 证书
      • 1-1.创建 csr 请求文件
    • 2.分发证书
      • 3.创建 kubeconfig
        • 4.创建 kube-proxy 配置文件
          • 5.创建启动配置文件
            • 6.创建启动项
              • 7.启动服务
                • 8.验证服务
                  • 9.其他操作
                    • 至此。kube-proxy 组件部署成功。
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档