hostnamectl set-hostname k8s-master
swapoff -a
编辑配置文件 /etc/fstab 将swap进行注释
使用free -g命令,Swap 显示都为0表示修改成功了
root@k8s-master:~# apt install -y docker.io
root@k8s-master:~# docker version
Client:
Version: 20.10.21
API version: 1.41
Go version: go1.18.1
Git commit: 20.10.21-0ubuntu1~18.04.3
Built: Thu Apr 27 05:50:21 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.1
Git commit: 20.10.21-0ubuntu1~18.04.3
Built: Thu Apr 27 05:36:22 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.12-0ubuntu1~18.04.1
GitCommit:
runc:
Version: 1.1.4-0ubuntu1~18.04.2
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
root@k8s-master:~# cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors":[
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"exec-opts":[
"native.cgroupdriver=systemd"
]
}
EOF
systemctl daemon-reload systemctl restart docker
//读取k8s目录下的文件进行安装
sudo sh install_ubuntu.sh
//从远程重新下载进行安装
sudo sh install install_ubuntu_online.sh
//指定配置项启动 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
// 获取内网重新生成kubeadm-init.yaml
root@k8s-master:~# cat k8s/kubeadm-init.yaml | sed "s/advertiseAddress:.*/advertiseAddress: $(ip addr show eth0 |grep "inet "|awk '{print $2}' | cut -d/ -f1)/" > kubeadm-init.yaml
//加载配置文件进行启动
root@k8s-master:~# kubeadm init --config kubeadm-init.yaml
配置信息
生成默认的配置信息 kube-init.yaml
kubeadm config print init-defaults > kubeadm-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: 192.168.1.20
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: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
clusterCIDR: "10.244.0.0/16"
# 启用 ipvs 模式
mode: "ipvs"
//获取外网地址重新生成kubeadm-init.yaml root@k8s-master:~# cat k8s/kubeadm-init.yaml | sed "s/advertiseAddress:.*/advertiseAddress: $(curl -s ifconfig.me)/" > kubeadm-init.yaml
//TODO
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
//安装本地 root@k8s-master:~# kubectl apply -f k8s/kube-flannel.yml //安装远程 root@k8s-master:~# kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
root@k8s-master:~# kubectl get node NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 13m v1.23.9 root@k8s-master:~# kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6d8c4cb4d-d85pk 1/1 Running 0 36m kube-system coredns-6d8c4cb4d-ddp9k 1/1 Running 0 36m kube-system etcd-k8s-master 1/1 Running 9 36m kube-system kube-apiserver-k8s-master 1/1 Running 8 36m kube-system kube-controller-manager-k8s-master 1/1 Running 10 36m kube-system kube-proxy-h4xnv 1/1 Running 0 36m kube-system kube-scheduler-k8s-master 1/1 Running 11 36m