hejw19970413 最近的时间轴更新
注册了 V2EX
2020 年 4 月 28 日
hejw19970413

hejw19970413

V2EX 第 486683 号会员,加入于 2020-04-28 09:41:26 +08:00
glm 降智了
问与答  •  hejw19970413  •  2025 年 12 月 13 日  •  最后回复来自 kidtx
2
咨询一下 DM 数据库, liquibase 执行的一个问题
程序员  •  hejw19970413  •  2024 年 11 月 29 日  •  最后回复来自 amanisheir
1
请教一下 Mybatis Mapper SQL
程序员  •  hejw19970413  •  2024 年 11 月 26 日  •  最后回复来自 montaro2017
15
请教一下 oracle 协议解析
程序员  •  hejw19970413  •  2024 年 10 月 31 日  •  最后回复来自 hasdream
14
kubebuilder 创建的 webhook 不生效
程序员  •  hejw19970413  •  2021 年 9 月 15 日  •  最后回复来自 hejw19970413
2
怎么在 V2EX 里面的正文添加图片
新手求助  •  hejw19970413  •  2021 年 7 月 26 日  •  最后回复来自 CEBBCAT
3
如何把 http 请求转成对应的 rpc 请求。
  •  1   
    程序员  •  hejw19970413  •  2021 年 7 月 19 日  •  最后回复来自 NCE
    25
    996 大小周的公司值得长时间待吗,如想走多久可以走?
  •  1   
    程序员  •  hejw19970413  •  2020 年 12 月 22 日  •  最后回复来自 zhuweiyou
    19
    为什么 LeetCode 中文站的题目都变成了英文?
    程序员  •  hejw19970413  •  2020 年 9 月 26 日  •  最后回复来自 youxiachai
    5
    LeetCode 程序员兄弟可能要罚钱了,心疼你们
    无要点  •  hejw19970413  •  2020 年 8 月 5 日  •  最后回复来自 xdxtao
    26
    hejw19970413 最近回复了
    2025 年 12 月 16 日
    回复了 idwalker 创建的主题 Google Google 的老账号,大家是如何成功登录 antigravity 的?
    我的不行 号是新加坡的 IP 也是 登录不了
    参与一下 MTM1NTI2NTY2MDdAMTYzLmNvbQ==
    2025 年 11 月 5 日
    回复了 coverme7 创建的主题 生活 大家会让另一半看你手机吗?
    随便看,主要是懒的看。
    2025 年 10 月 30 日
    回复了 sakurawzt 创建的主题 Kubernetes 求份搭建高可用 k8s 的教程
    自己玩可以如果企业搭建先建 ETCD ,家里玩尽量用 Debian ,Ubuntu 等用的比较多的,别弄国产
    要先弄 Keeplived + HA

    *前提:*

    ```
    1. 选择官方推荐版本并且不要选择最新版的
    2. 国内存在着镜像拉取问题
    3. 如果服务没起来需要看一下 containerd 服务
    ```

    *准备工作:*

    ```
    1. 确定机器的信息,操作系统,CPU 架构
    1. 操作系统
    2. CPU 架构
    2. 时区设置
    1. 配置系统时区: timedatectl set-timezone Asia/Shanghai
    2. 设置本地 RTC 为 0: timedatectl set-local-rtc 0
    3. 验证时区设置: timedatectl show --property=Timezone
    4. 验证 RTC 设置: timedatectl show --property=RTC
    3. 加载内核模块
    *需要加载['br_netfilter', 'overlay']*
    1. 查看/etc/modules-load.d,目录是否存在内核模块文件: ls /etc/modules-load.d/ | grep "k8s.conf"
    2. 如果不存在
    1. 创建模块加载配置文件: vi k8s.conf
    2. 写入模块加载文件:tee >

    <<EOF br_netfilter \n overlay \n EOF
    3. 临时加载模块: modprobe overlay br_netfilter
    4. 加载模块:

    5. 验证模块是否成功加载

    4. 关闭防火墙
    1. 常用的防火墙: ['firewalld', 'ufw', 'iptables']
    2. 检查服务是否运行: systemctl is-active <service-name>
    3. 禁用防火墙服务
    1. 停止服务: systemctl stop <service-name>
    2. 禁止开机自启: systemctl disable <serivce-name>
    4. 额外操作:
    firewalld: firewall-cmd --state && firewall-cmd --permanent --shutdown
    ufw: ufw disable
    iptables: iptables -F && iptables -X && iptables -t nat -F && iptables -t nat -X && iptables -t mangle -F && iptables -t manage -X
    5. 交换分区
    1. 检查交换分区: free -h && swapon --show
    2. 临时关闭交换分区: swapoff -a
    3. 永久关闭交换分区
    1. 注释掉

    文件中关于 swap 的配置:

    6. 修改内核参数:
    1. net.bridge.bridge-nf-call-ip6tables = 1
    2. net.bridge.bridge-nf-call-iptables = 1
    3. net.ipv4.ip_forward = 1
    ```

    *部署组件:*

    ````
    Dokcer [https://download.docker.com/linux/static/stable/]( https://download.docker.com/linux/static/stable/?_gl=1*1w17yhs*_ga*OTg3MzYwNS4xNzQzOTA0MTQ2*_ga_XJWPQMJYHQ*MTc0NDYwMDEwMC4zLjEuMTc0NDYwMDExNi40NC4wLjA.)

    ```
    export KUBE_VERSION=<version>
    export ARCH=<arch>
    export KUBEADM_URL=https://dl.k8s.io/release/<KUBE_VERSION>/bin/linux/<ARCH>/kubeadm
    export KUBECTL_URL=https://dl.k8s.io/release/<KUBE_VERSION>/bin/linux/<ARCH>/kubectl
    export KUBELET_URL=https://dl.k8s.io/release/<KUBE_VERSION>/bin/linux/<ARCH>/kubelet
    ```

    1. 安装 Docker:
    1. 下载安装包: curl -OL <docker_url>
    2. 解压安装包: tar -xf <tar_name> && sudo mv docker/* /usr/local/bin/
    2. 安装 kubeadm,kubectl,kubelet:
    1. 下载二进制: curl -OL $(echo $KUBEADM_URL) && curl -OL $(echo $KUBECTL_URL) && curl -OL $(echo $KUBECTL_URL)
    2. 移动文件位置: chmod +x kubeadm kubectl kubelet && sudo mv kubeadm kubectl kubelet /usr/local/bin/
    3. 创建 containerd.service:
    1. 创建 containerd 配置文件:

    2. 创建 containerd 服务文件:

    ```
    [Unit]
    Description=containerd container runtime
    Documentation=https://containerd.io
    After=network.target local-fs.target
    Wants=network.target

    [Service]
    Type=notify
    ExecStartPre=-/sbin/modprobe overlay
    ExecStart=/usr/local/bin/containerd
    TimeoutStartSec=0
    RestartSec=10
    Restart=always
    Delegate=yes
    KillMode=process
    OOMScoreAdjust=-999
    LimitNOFILE=1048576
    LimitNPROC=infinity
    LimitCORE=infinity
    TasksMax=infinity
    Environment="CGROUP_DRIVER=systemd"

    [Install]
    WantedBy=multi-user.target
    ```
    4. 创建 docker.service:
    1. 创建 docker 服务文件: /etc/systemd/system/docker.service
    ```
    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    BindsTo=containerd.service
    After=network-online.target containerd.service
    Wants=network-online.target

    [Service]
    Type=notify
    ExecStart=/usr/local/bin/dockerd --containerd=/run/containerd/containerd.sock
    Restart=always
    RestartSec=5
    TimeoutStartSec=0
    Delegate=yes
    KillMode=process
    OOMScoreAdjust=-999
    LimitNOFILE=1048576
    LimitNPROC=infinity
    LimitCORE=infinity
    TasksMax=infinity
    EnvironmentFile=-/etc/docker/daemon.json

    [Install]
    WantedBy=multi-user.target
    ```
    5. 创建 kubeadm-kubelet 配置:
    1. 创建 kubeadm-kubelet: /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
    ```
    Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=

    /bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
    Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
    EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
    EnvironmentFile=-/etc/sysconfig/kubelet
    ExecStart=
    ExecStart=/usr/local/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
    ```
    6. 创建 kubelet.service:
    *非必须*
    1.创建 kubelet 服务文件: /etc/systemd/system/kubelet.service
    ```
    [Unit]
    Description=kubelet: The Kubernetes Node Agent
    Documentation=https://kubernetes.io/docs/home/
    Wants=network-online.target
    After=network-online.target

    [Service]
    ExecStart=/usr/local/bin/kubelet
    Restart=always
    StartLimitInterval=0
    RestartSec=10

    [Install]
    WantedBy=multi-user.target
    ```
    7. 启动服务
    1. 重载 systemd 配置: systemctl daemon-reload
    2. 组件加入开机自启:
    1. containerd: systemctl enable --now containerd.service
    2. docker: systemctl enable --now docker.service
    3. kubelet: systemctl enable --now kubelet.service
    ````

    *部署 k8s*

    ````
    ```bash
    #!/bin/bash
    # 这里因为环境的不同的只提供一个基础的模版
    # <*> 需要按环境替换
    # <cri_socket> 默认地址: unix:///run/containerd/containerd.sock
    # <controlPlaneEndpoint> 部署多 master 需要这个控制平台地址不能为空
    # <san> apiservice 通过证书 san 校验,被请求的地址是否在证书内
    # <serviceSubnet> k8s 服务网络段
    # <podSubnet> k8s Pod 网络段
    # <etcd_data_dir> etcd 存储的地址
    # 具体的配置可以仔细阅读 https://kubernetes.io/zh-cn/docs/reference/setup-tools/kubeadm

    tee kubeadm-init.conf << EOF
    apiVersion: kubeadm.k8s.io/v1beta4
    bootstrapTokens:
    - groups:
    - system:bootstrappers:kubeadm:default-node-token
    token: <bootstrapTokens_token>
    ttl: 24h0m0s
    usages:
    - signing
    - authentication
    kind: InitConfiguration
    localAPIEndpoint:
    advertiseAddress: <localAPIEndpoint>
    bindPort: <bind_port>
    nodeRegistration:
    criSocket: <cri_socket>
    imagePullPolicy: IfNotPresent
    imagePullSerial: true
    timeouts:
    controlPlaneComponentHealthCheck: 4m0s
    discovery: 5m0s
    etcdAPICall: 2m0s
    kubeletHealthCheck: 4m0s
    kubernetesAPICall: 1m0s
    tlsBootstrap: 5m0s
    upgradeManifests: 5m0s
    ---
    apiVersion: kubeadm.k8s.io/v1beta4
    certificatesDir: /etc/kubernetes/pki
    clusterName: kubernetes
    apiServer:
    certSANs:
    - <san>
    controlPlaneEndpoint: <controlPlaneEndpoint>
    controllerManager: {}
    dns: {}
    encryptionAlgorithm: RSA-2048
    etcd:
    local:
    dataDir: <etcd_data_dir>
    imageRepository: registry.k8s.io
    kind: ClusterConfiguration
    kubernetesVersion: 1.32.3
    networking:
    dnsDomain: cluster.local
    serviceSubnet: <serviceSubnet>
    podSubnet: <podSubnet>
    proxy: {}
    scheduler: {}
    ---
    apiVersion: kubeproxy.config.k8s.io/v1alpha1
    kind: KubeProxyConfiguration
    mode: "iptables"
    EOF

    # 启动 k8s
    kubeadm init --config kubeadm-init.conf
    ```

    # 后续: 可以根据需要部署 CNI,CSI

    # CNI:
    # export calico_version=v3.27.4
    # calico : https://raw.githubusercontent.com/projectcalico/calico/$calico_version/manifests/calico.yaml

    # CSI: NFS 这个很简单!,CEPH 部署麻烦些
    ````

    *额外的说明*

    ```
    *k8s 加入节点*
    1. 如果初始化的没有配置 controlPlaneEndpoint ,现在需要加 master 节点
    1. 配置控制平面地址: kubeadm init --control-plane-endpoint <control-plane-endpoint> --upload-certs
    2. 加入 control_plane
    1. 创建新的令牌: kubeadm token create --print-join-command --certificate-key $(kubeadm init phase upload-certs --upload-certs | tail -n 1)
    3. 加入 worker
    1. 创建新的令牌: kubeadm token create --print-join-command

    *k8s 镜像*
    1. 查看镜像:kubeadm config images list
    ```
    2025 年 10 月 23 日
    回复了 jinbangzhu 创建的主题 程序员 关于新来的技术 leader 准备用 Claude code 升级现有项目
    升级不如重写,重写不如不写
    Thinkpad 在 Linux 节能和待机上,有少许问题。其他都 OK
    2025 年 9 月 23 日
    回复了 samkallon 创建的主题 生活 要不要卖房
    1. 股市有风险,投资需谨慎
    2. 有孩子的情况下,需要考虑户口上学

    如果你认为房子是用来住的,就不要考虑价格问题

    可以这么想,你现在的房子就是租的,每年跌的钱就是租房的钱。这样考虑心里会不会好受点。

    最最最重要是家庭和谐。
    2025 年 9 月 23 日
    回复了 breadykidliu 创建的主题 问与答 关于退休后有一个大胆的猜测
    我今天思考了一下,预估计我退休大概得 70 多,97 年人。
    2025 年 8 月 21 日
    回复了 zhangyou1010 创建的主题 Linux 公司最近要买国产 CPU 服务器,求推荐
    ky10.aarch64
    Kunpeng-920
    公司选的
    2024 年 11 月 26 日
    回复了 dreamdragon 创建的主题 程序员 ceph 生产环境搭建和配置推荐
    不会就默认!
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3206 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:11 · PVG 21:11 · LAX 05:11 · JFK 08:11
    ♥ Do have faith in what you're doing.