需要使用root用户
ubuntu
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
#close swap
swapoff -a
#remove swap mount
vi /etc/fstab
apt-key 在最新版的发行版里已经标记弃用, 比如ubuntu, 需要通过/etc/apt/trusted.gpg.d 文件夹管理gpg密钥
fedora
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#close selinux
setenforce 0
#disable selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'
#disable firewalld
systemctl disable firewalld.service
dnf update && dnf install -y kubelet kubeadm kubectl
systemctl enable --now kubelet
#close swap
swapoff -a
#disable swap
dnf remove zram-generator-defaults
config
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
#apiserver address
advertiseAddress: 192.168.1.2
bindPort: 6443
nodeRegistration:
# 此处使用containerd,最新版已经不支持docker部署
criSocket: unix:///var/run/containerd/containerd.sock
imagePullPolicy: IfNotPresent
name: rogerogers
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
dns: {}
etcd:
external:
#此处使用自建的etcd,也可以使用自带的etcd
endpoints:
- https://192.168.1.2:2379
caFile: /etc/etcd/pki/ca.crt
certFile: /etc/etcd/pki/apiserver-etcd-client.crt
keyFile: /etc/etcd/pki/apiserver-etcd-client.key
kind: ClusterConfiguration
# 此处为最新版
kubernetesVersion: 1.24.1
networking:
dnsDomain: cluster.local
# 这里使用cni组件以flannel为例,其他cni组件需要修改
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
可以使用kubeadm config print init-defaults
打印最新版配置文件,对比修改下。
修改内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
overlay
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
可能需要立即加载模块
modprobe br_netfilter overlay
#先拉取镜像,加快部署速度
kubeadm config images pull --config kubeadm-init-config.yaml
#初始化
kubeadm init --config kubeadm-init-config.yaml
#单节点允许调度器调度部署
kubectl taint nodes --all node-role.kubernetes.io/control-plane- node-role.kubernetes.io/master-
mkdir $HOME/.kube && sudo cp /etc/kubenertes/admin.conf $HOME/.kube/config
kubectl get node
可以看到k8s已经启动运行了