1 操作系统版本要求
1.1 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令1.2 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存)
1.2 CPU 核或更多
1.3 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
1.4 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见:https://v1-23.docs.kubernetes.io/zh/docs/setup/production-env...。
1.5 开启机器上的某些端口。请参见:https://v1-23.docs.kubernetes.io/zh/docs/setup/production-env...
1.6 禁用交换分区。为了保证 kubelet 正常工作,你 必须 禁用交换分区。
2 安装必要的运行程序
2.1 安装必要组建
apt install -y conntrack ebtables
2.2 永久修改主机名
hostnamectl set-hostname k8s-master
2.3 禁用swap
2.3.1 临时修改,重启后恢复
swapoff -a
2.3.2 永久修改
编辑配置文件 /etc/fstab 将swap进行注释
2.3.3 查看是否生效
使用free -g
命令,Swap 显示都为0表示修改成功了
2.4 安装docker
apt install -y docker.io
2.4.1修改/etc/docker/daemon.json
{
"registry-mirrors":[
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"exec-opts":[
"native.cgroupdriver=systemd"
]
}
2.4.3重启docker
systemctl daemon-reload
systemctl restart docker
2.5 安装CNI插件
root@k8s-master:~# sudo mkdir -p /opt/cni/bin
root@k8s-master:~# curl -L https://github.com/containernetworking/plugins/releases/download/v0.8.2/cni-plugins-linux-amd64-v0.8.2.tgz | sudo tar -C /opt/cni/bin -xz
2.5 安装 crictl(kubeadm/kubelet 容器运行时接口(CRI)所需)
root@k8s-master:~# curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.22.0/crictl-v1.22.0-linux-amd64.tar.gz" | sudo tar -C /usr/local/bin -xz
2.6 安装 kubeadm、kubelet、kubectl
root@k8s-master:~# cd /usr/local/bin && curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/v1.23.9/bin/linux/amd64/{kubeadm,kubelet,kubectl}
root@k8s-master:~# chmod +x kubeadm kubectl kubelet
2.7 添加kubelet系统服务
root@k8s-master:~# curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.4.0/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:/usr/local/bin:g" | sudo tee /etc/systemd/system/kubelet.service
root@k8s-master:~# sudo mkdir -p /etc/systemd/system/kubelet.service.d
root@k8s-master:~# curl -sSL "https://raw.githubusercontent.com/kubernetes/release/v0.4.0/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:/usr/local/bin:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
2.7.1启动kubelet系统服务
root@k8s-master:~# systemctl enable kubelet
2.8 安装成功的标识
分别执行kubeadm version
,kubectl version
,systemctl status kubelet
命令
3 初始化一个master集群
root@k8s-master:~# kubeadm init \
--apiserver-advertise-address=0.0.0.0 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version 1.23.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all
3.1 加载配置文件启动一个集群
root@k8s-master:~# kubeadm init --config kube-init.yaml
kube-init.yaml
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 0.0.0.0
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
imagePullPolicy: IfNotPresent
name: k8s-master
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
#etcd访问地址
extraArgs:
listen-client-urls: "https://127.0.0.1:2379,https://127.0.0.1:2379"
listen-peer-urls: "https://127.0.0.1:2380"
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.23.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
podSubnet: 10.244.0.0/16
scheduler: {}
3.2 配置文件写入到$HOME下
root@k8s-master:~# mkdir -p $HOME/.kube
root@k8s-master:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
root@k8s-master:~# sudo chown $(id -u):$(id -g) $HOME/.kube/config
root@k8s-master:~# export KUBECONFIG=/etc/kubernetes/admin.conf
3.3 安装网络组建
root@k8s-master:~# kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
3.4 检查master节点是否安装成功
root@k8s-master:~# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 13m v1.23.9
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。