news 2026/4/23 11:14:44

K8s-1.29.2二进制安装-第二章(K8s及ETCD下载及安装)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8s-1.29.2二进制安装-第二章(K8s及ETCD下载及安装)

K8s二进制安装:主要内容是安装k8s及安装etcd,并生成了K8s和etcd需要的证书文件(文章结束后会把使用到的容器镜像及工具一并共享)

1.安装 K8S 和 ETCD 二进制文件

# 下载安装包wgethttps://github.com/etcd-io/etcd/releases/download/v3.5.12/etcd-v3.5.12-linux-amd64.tar.gzwgethttps://cdn.dl.k8s.io/release/v1.29.2/kubernetes-server-linux-amd64.tar.gz# 解压k8s安装文件tar-xf kubernetes-server-linux-amd64.tar.gz --strip-components=3-C /usr/local/bin kubernetes/server/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}# 解压etcd安装文件tar-xf etcd*.tar.gz&&mvetcd-*/etcd /usr/local/bin/&&mvetcd-*/etcdctl /usr/local/bin/# 查看/usr/local/bin下内容[root@server170 ~]# ll /usr/local/bin/总用量543048-rwxr-xr-x152828789939235438081312024etcd -rwxr-xr-x152828789939177438721312024etcdctl -rwxr-xr-x1root root1237196802142024kube-apiserver -rwxr-xr-x1root root1183498242142024kube-controller-manager -rwxr-xr-x1root root497049602142024kubectl -rwxr-xr-x1root root1118126082142024kubelet -rwxr-xr-x1root root552632322142024kube-proxy -rwxr-xr-x1root root559431682142024kube-scheduler# 查看版本kubelet --version Kubernetes v1.29.2 etcdctl version etcdctl version:3.5.12 API version:3.5# 将组件发送至其它 k8s 节点(定义一个变量)Master='server171 server172'Work='server173 server174'# 拷贝 master 组件(使用for循环调取环境变量进行传输)forNODEin$Master;doecho$NODE;scp/usr/local/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}$NODE:/usr/local/bin/;scp/usr/local/bin/etcd*$NODE:/usr/local/bin/;done# 拷贝 work 组件forNODEin$Work;doecho$NODE;scp/usr/local/bin/kube{let,-proxy}$NODE:/usr/local/bin/;done# 所有节点执行mkdir-p /opt/cni/bin

2.相关证书生成

2.1 安装证书工具

# master01 节点下载证书生成工具wget"https://github.com/cloudflare/cfssl/releases/download/v1.6.4/cfssl_1.6.4_linux_amd64"-O /usr/local/bin/cfsslwget"https://github.com/cloudflare/cfssl/releases/download/v1.6.4/cfssljson_1.6.4_linux_amd64"-O /usr/local/bin/cfssljsonchmod+x /usr/local/bin/cfssl /usr/local/bin/cfssljson

2.2 生成 ETCD 证书(以下操作在所有 master 节点操作)

mkdir/etc/etcd/ssl -pcd/etc/etcd/ssl# 写入生成证书所需的配置文件,master01 节点生成 etcd 证书cat>ca-config.json<<EOF { "signing": { "default": { "expiry": "876000h" }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "876000h" } } } } EOF# 对于kubernetes配置文件,证书的过期时间也是876000h,即100年。cat>etcd-ca-csr.json<<EOF { "CN": "etcd", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "etcd", "OU": "Etcd Security" } ], "ca": { "expiry": "876000h" } } EOF# 生成证书cfssl gencert -initca etcd-ca-csr.json|cfssljson -bare /etc/etcd/ssl/etcd-cacat>etcd-csr.json<<EOF { "CN": "etcd", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "etcd", "OU": "Etcd Security" } ] } EOF# 生成证书cfssl gencert -ca=/etc/etcd/ssl/etcd-ca.pem -ca-key=/etc/etcd/ssl/etcd-ca-key.pem -config=ca-config.json -hostname=127.0.0.1,server170,server171,server172,192.168.1.170,192.168.1.171,192.168.1.172 -profile=kubernetes etcd-csr.json|cfssljson -bare /etc/etcd/ssl/etcd# 将证书复制到其他Master节点Master='server171 server172'forNODEin$Master;dossh$NODE"mkdir -p /etc/etcd/ssl";forFILEinetcd-ca-key.pem etcd-ca.pem etcd-key.pem etcd.pem;doscp/etc/etcd/ssl/${FILE}$NODE:/etc/etcd/ssl/${FILE};done;done

2.4 生成 K8S 相关证书(特别说明除外,以下操作在所有 master 节点操作)

mkdir-p /etc/kubernetes/pkicd/etc/kubernetes/pki# master 节点生成 k8s 证书, 写入生成证书所需的配置文件cat>ca-csr.json<<EOF { "CN": "kubernetes", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "Kubernetes", "OU": "Kubernetes-manual" } ], "ca": { "expiry": "876000h" } } EOF# 生成证书cfssl gencert -initca ca-csr.json|cfssljson -bare /etc/kubernetes/pki/cacat>apiserver-csr.json<<EOF { "CN": "kube-apiserver", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "Kubernetes", "OU": "Kubernetes-manual" } ] } EOFcat>ca-config.json<<EOF { "signing": { "default": { "expiry": "876000h" }, "profiles": { "kubernetes": { "usages": [ "signing", "key encipherment", "server auth", "client auth" ], "expiry": "876000h" } } } } EOFcfssl gencert -ca=/etc/kubernetes/pki/ca.pem -ca-key=/etc/kubernetes/pki/ca-key.pem -config=ca-config.json -hostname=10.96.0.1,192.168.10.16,127.0.0.1,kubernetes,kubernetes.default,kubernetes.default.svc,kubernetes.default.svc.cluster,kubernetes.default.svc.cluster.local,xxx.top,xxx.com,xxx.cn,192.168.1.170,192.168.1.171,192.168.1.172,192.168.1.173,192.168.1.174,192.168.1.175,192.168.1.176,192.168.1.177,192.168.1.178,192.168.1.179,192.168.1.180 -profile=kubernetes apiserver-csr.json|cfssljson -bare /etc/kubernetes/pki/apiserver# 生成 apiserver 聚合证书cat>front-proxy-ca-csr.json<<EOF { "CN": "kubernetes", "key": { "algo": "rsa", "size": 2048 }, "ca": { "expiry": "876000h" } } EOF# 生成证书cfssl gencert -initca front-proxy-ca-csr.json|cfssljson -bare /etc/kubernetes/pki/front-proxy-cacat>front-proxy-client-csr.json<<EOF { "CN": "front-proxy-client", "key": { "algo": "rsa", "size": 2048 } } EOFcfssl gencert\-ca=/etc/kubernetes/pki/front-proxy-ca.pem\-ca-key=/etc/kubernetes/pki/front-proxy-ca-key.pem\-config=ca-config.json\-profile=kubernetes front-proxy-client-csr.json|cfssljson -bare /etc/kubernetes/pki/front-proxy-client# 生成 controller-manage 的证书cat>manager-csr.json<<EOF { "CN": "system:kube-controller-manager", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "system:kube-controller-manager", "OU": "Kubernetes-manual" } ] } EOFcfssl gencert\-ca=/etc/kubernetes/pki/ca.pem\-ca-key=/etc/kubernetes/pki/ca-key.pem\-config=ca-config.json\-profile=kubernetes\manager-csr.json|cfssljson -bare /etc/kubernetes/pki/controller-manager kubectl config set-cluster kubernetes\--certificate-authority=/etc/kubernetes/pki/ca.pem\--embed-certs=true\--server=https://127.0.0.1:8443\--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig kubectl config set-context system:kube-controller-manager@kubernetes\--cluster=kubernetes\--user=system:kube-controller-manager\--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig kubectl config set-credentials system:kube-controller-manager\--client-certificate=/etc/kubernetes/pki/controller-manager.pem\--client-key=/etc/kubernetes/pki/controller-manager-key.pem\--embed-certs=true\--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig kubectl config use-context system:kube-controller-manager@kubernetes\--kubeconfig=/etc/kubernetes/controller-manager.kubeconfig# 生成 kube-scheduler 的证书cat>scheduler-csr.json<<EOF { "CN": "system:kube-scheduler", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "system:kube-scheduler", "OU": "Kubernetes-manual" } ] } EOFcfssl gencert\-ca=/etc/kubernetes/pki/ca.pem\-ca-key=/etc/kubernetes/pki/ca-key.pem\-config=ca-config.json\-profile=kubernetes\scheduler-csr.json|cfssljson -bare /etc/kubernetes/pki/scheduler kubectl config set-cluster kubernetes\--certificate-authority=/etc/kubernetes/pki/ca.pem\--embed-certs=true\--server=https://127.0.0.1:8443\--kubeconfig=/etc/kubernetes/scheduler.kubeconfig kubectl config set-credentials system:kube-scheduler\--client-certificate=/etc/kubernetes/pki/scheduler.pem\--client-key=/etc/kubernetes/pki/scheduler-key.pem\--embed-certs=true\--kubeconfig=/etc/kubernetes/scheduler.kubeconfig kubectl config set-context system:kube-scheduler@kubernetes\--cluster=kubernetes\--user=system:kube-scheduler\--kubeconfig=/etc/kubernetes/scheduler.kubeconfig kubectl config use-context system:kube-scheduler@kubernetes\--kubeconfig=/etc/kubernetes/scheduler.kubeconfig# 生成 admin 的证书配置cat>admin-csr.json<<EOF { "CN": "admin", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "system:masters", "OU": "Kubernetes-manual" } ] } EOFcfssl gencert\-ca=/etc/kubernetes/pki/ca.pem\-ca-key=/etc/kubernetes/pki/ca-key.pem\-config=ca-config.json\-profile=kubernetes\admin-csr.json|cfssljson -bare /etc/kubernetes/pki/admin kubectl config set-cluster kubernetes\--certificate-authority=/etc/kubernetes/pki/ca.pem\--embed-certs=true\--server=https://127.0.0.1:8443\--kubeconfig=/etc/kubernetes/admin.kubeconfig kubectl config set-credentials kubernetes-admin\--client-certificate=/etc/kubernetes/pki/admin.pem\--client-key=/etc/kubernetes/pki/admin-key.pem\--embed-certs=true\--kubeconfig=/etc/kubernetes/admin.kubeconfig kubectl config set-context kubernetes-admin@kubernetes\--cluster=kubernetes\--user=kubernetes-admin\--kubeconfig=/etc/kubernetes/admin.kubeconfig kubectl config use-context kubernetes-admin@kubernetes --kubeconfig=/etc/kubernetes/admin.kubeconfig# 创建 kube-proxy 证书cat>kube-proxy-csr.json<<EOF { "CN": "system:kube-proxy", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "Beijing", "L": "Beijing", "O": "system:kube-proxy", "OU": "Kubernetes-manual" } ] } EOFcfssl gencert\-ca=/etc/kubernetes/pki/ca.pem\-ca-key=/etc/kubernetes/pki/ca-key.pem\-config=ca-config.json\-profile=kubernetes\kube-proxy-csr.json|cfssljson -bare /etc/kubernetes/pki/kube-proxy kubectl config set-cluster kubernetes\--certificate-authority=/etc/kubernetes/pki/ca.pem\--embed-certs=true\--server=https://127.0.0.1:8443\--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig kubectl config set-credentials kube-proxy\--client-certificate=/etc/kubernetes/pki/kube-proxy.pem\--client-key=/etc/kubernetes/pki/kube-proxy-key.pem\--embed-certs=true\--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig kubectl config set-context kube-proxy@kubernetes\--cluster=kubernetes\--user=kube-proxy\--kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig kubectl config use-context kube-proxy@kubernetes --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig# 创建 ServiceAccount Key ——secretopenssl genrsa -out /etc/kubernetes/pki/sa.key2048openssl rsa -in /etc/kubernetes/pki/sa.key -pubout -out /etc/kubernetes/pki/sa.pub# 将证书发送到其他 master 节点# 其他节点创建目录mkdir/etc/kubernetes/pki/ -pforNODEink8s-master02 k8s-master03;doforFILEin$(ls/etc/kubernetes/pki|grep-v etcd);doscp/etc/kubernetes/pki/${FILE}$NODE:/etc/kubernetes/pki/${FILE};done;forFILEinadmin.kubeconfig controller-manager.kubeconfig scheduler.kubeconfig;doscp/etc/kubernetes/${FILE}$NODE:/etc/kubernetes/${FILE};done;done# 查看证书ls/etc/kubernetes/pki/

3.ETCD 配置

# Server170cat>/etc/etcd/etcd.config.yml<<EOF name: 'server170'># Server171cat>/etc/etcd/etcd.config.yml<<EOF name: 'server171'># Server172cat>/etc/etcd/etcd.config.yml<<EOF name: 'server172'># 创建 service( 所有 master 节点操作)cat>/usr/lib/systemd/system/etcd.service<<EOF [Unit] Description=Etcd Service Documentation=https://coreos.com/etcd/docs/latest/ After=network.target [Service] Type=notify ExecStart=/usr/local/bin/etcd --config-file=/etc/etcd/etcd.config.yml Restart=on-failure RestartSec=10 LimitNOFILE=65536 [Install] WantedBy=multi-user.target Alias=etcd3.service EOF# 创建 etcd 证书目录(3台master)mkdir/etc/kubernetes/pki/etcdln-s /etc/etcd/ssl/* /etc/kubernetes/pki/etcd/ systemctl daemon-reload systemctlenable--now etcd.service systemctl status etcd.service# 查看 etcd 状态# 如果要用 IPv6 那么把 IPv4 地址修改为 IPv6 即可exportETCDCTL_API=3etcdctl --endpoints="192.168.1.170:2379,192.168.1.171:2379,192.168.1.172:2379"--cacert=/etc/kubernetes/pki/etcd/etcd-ca.pem --cert=/etc/kubernetes/pki/etcd/etcd.pem --key=/etc/kubernetes/pki/etcd/etcd-key.pem endpoint status --write-out=table# 输出结果+--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+|ENDPOINT|ID|VERSION|DB SIZE|IS LEADER|IS LEARNER|RAFTTERM|RAFT INDEX|RAFT APPLIED INDEX|ERRORS|+--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+|192.168.1.170:2379|c1621f2f11fc33f9|3.5.12|20kB|true|false|2|9|9|||192.168.1.171:2379|14f18e5e057e3164|3.5.12|20kB|false|false|2|9|9|||192.168.1.172:2379|225a00eef92e8f19|3.5.12|20kB|false|false|2|9|9||+--------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:51:31

EmotiVoice语音合成模型的推理能耗与绿色计算考量

EmotiVoice语音合成模型的推理能耗与绿色计算考量 在智能语音助手、有声书平台和虚拟偶像日益普及的今天&#xff0c;用户早已不再满足于“能说话”的机器声音。他们期待的是富有情感起伏、具备个性音色、仿佛真实人类演绎的语音体验。EmotiVoice 正是在这一背景下脱颖而出的开…

作者头像 李华
网站建设 2026/4/23 10:55:18

5、Linux 命令使用与学习指南

Linux 命令使用与学习指南 文件名与文件操作 在 Linux 系统中,文件名的命名有一定的讲究。例如,以下操作展示了文件名中使用连字符可能带来的问题: $ ls -cousin_roy.jpg cousin_beth.jpg $ rm ./-cousin_roy.jpg $ ls cousin_beth.jpg这表明 Linux 用户需要注意,尽量不…

作者头像 李华
网站建设 2026/4/23 11:47:53

EmotiVoice能否支持多人协作编辑语音项目?

EmotiVoice能否支持多人协作编辑语音项目&#xff1f; 在游戏本地化团队为一款多角色叙事游戏配音时&#xff0c;常会遇到这样的场景&#xff1a;编剧修改了某段对白&#xff0c;配音导演希望立刻听到新文本以不同情绪、由指定角色音色朗读的效果。而此时&#xff0c;主配音演员…

作者头像 李华
网站建设 2026/4/23 11:47:35

如何训练自定义情感模型接入EmotiVoice框架?

如何训练自定义情感模型接入 EmotiVoice 框架&#xff1f; 在虚拟偶像能开演唱会、AI 客服会“共情”用户的今天&#xff0c;语音合成早已不再是简单地把文字读出来。用户期待的是有情绪、有性格的声音——愤怒时语调上扬、悲伤时语速放缓、讽刺时略带拖腔……这些细微的情感表…

作者头像 李华
网站建设 2026/4/23 11:45:37

40、深入了解 Expect 脚本作为守护进程的应用与实现

深入了解 Expect 脚本作为守护进程的应用与实现 1. 子进程的工作机制 子进程在整个系统中扮演着重要的角色。它首先会立即断开连接,然后生成实际的进程。之后,子进程会等待每个命名管道(FIFO)的另一端被打开。一旦打开,这些 FIFO 就会被移除,以防止其他进程连接,随后开…

作者头像 李华