kubernetes二进制安装

本文详细介绍了如何手动从二进制文件安装Kubernetes,包括准备环境、安装etcd和docker、部署Master和Worker Node,以及设置高可用架构。在过程中,涉及到证书生成、配置文件编辑、CNI网络部署、Dashboard和CoreDNS的安装,以及解决常见错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.准备工作:

k8s主机地址:

192.168.0.4 k8s-master01
192.168.0.5 k8s-master02
192.168.0.6 k8s-master03
192.168.0.7 k8s-node01
192.168.0.8 k8s-node02

etcd主机地址:

192.168.0.26 etcd-01
192.168.0.27 etcd-02
192.168.0.28 etcd-03

Service 和 Pods Ip 段划分:

名称 IP网段 备注
service-cluster-ip 10.0.0.0/16 可用地址65534
pods-ip 10.20.0.0/16 可用地址65534
集群dns 10.0.0.10 用于集群service域名解析

禁用防火墙(具体看你用什么linux):

sudo  ufw enable|disable

禁用swap:

#禁用命令
sudo swapoff -a
#启用命令
sudo swapon -a

2.安装etcd

参考我的另外一篇文章:https://blog.youkuaiyun.com/xiaoyi5224765/article/details/113999834

3.安装docker

安装docker:

apt-get install docker.io

配置docker镜像加速器(这里配置你自己的阿里云镜像加速器):

mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
   
  "registry-mirrors": ["https://你自己的阿里云镜像加速器.mirror.aliyuncs.com"]
}
EOF

4.部署Master Node

4.1 生成kube-apiserver证书
给kube-apiserver生成ssl:

cat > ca-config.json << EOF 
{
   
	"signing": {
   
		"default": {
   
			"expiry": "87600h"
		},
		"profiles": {
   
			"kubernetes": {
   
				"expiry": "87600h",
				"usages": [
					"signing",
					"key encipherment",
					"server auth",
					"client auth"
				]
			}
		}
	}
}
EOF
cat > ca-csr.json << EOF 
{
   
	"CN": "kubernetes",
	"key": {
   
		"algo": "rsa",
		"size": 2048
	},
	"names": [{
   
		"C": "CN",
		"L": "Shanghai",
		"ST": "Shanghai",
		"O": "k8s",
		"OU": "System"
	}]
}
EOF
cat > server-csr.json << EOF
{
   
	"CN": "kubernetes",
	"hosts": [
		"10.0.0.1",
		"127.0.0.1",
		"192.168.0.4",
		"192.168.0.5",
		"192.168.0.6",
		"192.168.0.7",
		"192.168.0.8",
		"192.168.0.26",
		"192.168.0.27",
		"192.168.0.28",
		"kubernetes",
		"kubernetes.default",
		"kubernetes.default.svc",
		"kubernetes.default.svc.cluster",
		"kubernetes.default.svc.cluster.local"
	],
	"key": {
   
		"algo": "rsa",
		"size": 2048
	},
	"names": [{
   
		"C": "CN",
		"L": "Shanghai",
		"ST": "Shanghai",
		"O": "k8s",
		"OU": "System"
	}]
}
EOF

生成证书:

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server

4.2 从github下载二进制包

地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.18.md#v1183

注:打开链接你会发现里面有很多包,下载一个server包就够了,包含了Master和Worker Node二进制文件

4.3 解压二进制包

mkdir -p /opt/kubernetes/{
   bin,cfg,ssl,logs} 
tar zxf kubernetes-server-linux-amd64.tar.gz
cd kubernetes/server/bin
cp kube-apiserver kube-scheduler kube-controller-manager /opt/kubernetes/bin
cp kubectl /usr/bin/

4.4 部署kube-apiserver

  1. 创建配置文件
cat > /opt/kubernetes/cfg/kube-apiserver.conf << EOF
KUBE_APISERVER_OPTS="--logtostderr=true \\
--v=0 \\
--log-dir=/opt/kubernetes/logs \\
--etcd-servers=https://192.168.0.26:2379,https://192.168.0.26:2379,https://192.168.0.26:2379 \\
--bind-address=192.168.0.6 \\
--secure-port=6443 \\
--advertise-address=192.168.0.6 \\
--allow-privileged=true \\
--service-cluster-ip-range=10.0.0.0/24 \\
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction \\
--authorization-mode=RBAC,Node \\
--enable-bootstrap-token-auth=true \\
--token-auth-file=/opt/kubernetes/cfg/token.csv \\
--service-node-port-range=30000-32767 \\
--kubelet-client-certificate=/opt/kubernetes/ssl/server.pem \\
--kubelet-client-key=/opt/kubernetes/ssl/server-key.pem \\
--tls-cert-file=/opt/kubernetes/ssl/server.pem  \\
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \\
--client-ca-file=/opt/kubernetes/ssl/ca.pem \\
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \\
--etcd-cafile=/opt/etcd/ssl/ca.pem \\
--etcd-certfile=/opt/etcd/ssl/client.pem \\
--etcd-keyfile=/opt/etcd/ssl/client-key.pem \\
--audit-log-maxage=30 \\
--audit-log-maxbackup=3 \\
--audit-log-maxsize=100 \\
--audit-log-path=/opt/kubernetes/logs/k8s-audit.log"
EOF

2.把生成的证书拷贝到kube-apiserver.conf中的路径
3. 启用 TLS Bootstrapping 机制
TLS Bootstraping:Master apiserver启用TLS认证后,Node节点kubelet和kube-proxy要与kube-apiserver进行通信,必须使用CA签发的有效证书才可以,当Node节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。为了简化流程,Kubernetes引入了TLS bootstraping机制来自动颁发客户端证书,kubelet会以一个低权限用户自动向apiserver申请证书,kubelet的证书由apiserver动态签署。所以强烈建议在Node上使用这种方式,目前主要用于kubelet,kube-proxy还是由我们统一颁发一个证书。
TLS bootstraping 工作流程:
在这里插入图片描述
生成token csv

cat > /opt/kubernetes/cfg/token.csv << EOF
8054b7219e601b121e8d2b4f73d255ad,kubelet-bootstrap,10001,"system:node-bootstrapper"
EOF

也可以用以下命令创建token:

head -c 16 /dev/urandom | od -An -t x | tr -d ' '

把上面命令执行的结果copy到token.csv文件中。

4.Systemd管理apiserver

cat > /lib/systemd/system/kube-apiserver.service << EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/opt/kubernetes/cfg/kube-apiserver.conf
ExecStart=/opt/kubernetes/bin/kube
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值