永久修改主机名
1
| hostnamectl set-hostname k8s-master
|
禁用swap
临时修改,重启后恢复
永久修改
编辑配置文件 /etc/fstab 将swap进行注释
查看是否生效
使用free -g
命令,Swap 显示都为0表示修改成功了
安装docker
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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:
|
修改/etc/docker/daemon.json
1 2 3 4 5 6 7 8 9 10 11
| 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
|
重启docker
1 2
| systemctl daemon-reload systemctl restart docker
|
必要组建安装
1 2
| //从远程重新下载进行安装 sudo sh install install_ubuntu_online.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #!/bin/sh # https://v1-23.docs.kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
# 指定文件包路径 K8S_PKG=${PWD}/pkg # 可执行文件路径 DOWNLOAD_DIR=/usr/local/bin # cni可执行文件安装目录 CNI_BIN_DIR=/opt/cni/bin ARCH="amd64"
# 安装必要的组建 sudo apt update sudo apt install -y conntrack ebtables ntpdate socat
# 允许 iptables 检查桥接流量 sudo cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF
# 允许 iptables 检查桥接流量 sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system
# 时间同步 sudo ntpdate time.windows.com
# 安装CNI插件 CNI_VERSION="v0.8.2" sudo mkdir -p $CNI_BIN_DIR sudo curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz
# 安装crictl CRICTL_VERSION="v1.22.0" sudo curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
RELEASE="v1.23.9" # ELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)" cd $DOWNLOAD_DIR && sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl}
sudo chmod +x kubeadm kubectl kubelet
RELEASE_VERSION="v0.4.0" sudo curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service sudo mkdir -p /etc/systemd/system/kubelet.service.d sudo curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 设置kubelet开启自动自动 sudo systemctl enable --now kubelet
|
加载配置文件启动一个集群
启动方式1
1 2 3
| //指定配置项启动 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
|
启动方式2
1 2 3 4 5
| // 获取内网重新生成kubeadm-init.yaml root@k8s-master:~# cat kubeadm-init-default.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-default.yaml
然后进行按照需求进行修改成以下的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| 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 # k8s版本 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"
|
配置文件写入到$HOME下
1 2 3 4
| 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
|
安装网络组建
1 2 3 4
| //安装本地 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
|
检查master节点是否安装成功
1 2 3 4 5 6 7 8 9 10 11 12 13
| 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
|