安装 kubelet kubeadm kubectl
K8s 集群的每个 node 上都要安装的
配置 containerd (容器运行时)
1. 转发 IPv4 并让 iptables 看到桥接流量
需要配置项 | 说明 | 验证 |
---|---|---|
br_netfilter | Ubuntu 18.04.4 LTS 已加载 | lsmod | grep br_netfilter |
overlay | Ubuntu 18.04.4 LTS 已加载 | lsmod | grep overlay |
net.bridge.bridge-nf-call-iptables=1 | Ubuntu 18.04.4 LTS 默认已是 1 | sysctl net.bridge.bridge-nf-call-iptables |
net.bridge.bridge-nf-call-ip6tables=1 | Ubuntu 18.04.4 LTS 默认已是 1 | sysctl net.bridge.bridge-nf-call-ip6tables |
net.ipv4.ip_forward=1 | Ubuntu 18.04.4 LTS 默认已是 1 | sysctl net.ipv4.ip_forward |
2. containerd 相关配置
先生成默认的配置:
bash
sudo containerd config default | sudo tee /etc/containerd/config.toml
该默认配置以下 2 处:
源文本 | 修改为 |
---|---|
SystemdCgroup = false | SystemdCgroup = true |
sandbox_image = "registry.k8s.io/pause:3.6" | sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6" |
修改完毕后,执行systemctl restart containerd
配置 kubelet 的 cgroup 驱动
Kubernetes v1.28 默认已经是
kubeadm 安装 K8s
bash
sudo kubeadm init \
--apiserver-advertise-address 10.0.16.5 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.28.4 \
--service-cidr 10.100.0.0/16 \
--pod-network-cidr 10.244.0.0/16
参数说明:
参数 | 说明 |
---|---|
apiserver-advertise-address | API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口 |
image-repository | 镜像拉取的仓库,填写国内镜像源,不会被墙,拉不下来 |
kubernetes-version | K8s 版本,本文值为 v1.28.4 |
service-cidr | 为服务的虚拟 IP 地址另外指定 IP 地址段。默认值:"10.96.0.0/12" |
pod-network-cidr | 指明 Pod 网络可以使用的 IP 地址段。如果使用 Flannel 网络,必须配置这个字段。 |
官方文档参考: https://kubernetes.io/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
成为 init 后,会有不少信息输出,按这些信息提示操作
安装网络插件
bash
kubectl apply -f https://github.com/flannel-io/flannel/releases/download/v0.23.0/kube-flannel.yml
验收
bash
fananchong@myubuntu:~$ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-hrpcn 1/1 Running 0 3h6m
kube-system coredns-66f779496c-8lsvj 1/1 Running 0 3h32m
kube-system coredns-66f779496c-kbzts 1/1 Running 0 3h32m
kube-system etcd-myubuntu 1/1 Running 1 3h32m
kube-system kube-apiserver-myubuntu 1/1 Running 1 3h32m
kube-system kube-controller-manager-myubuntu 1/1 Running 1 3h32m
kube-system kube-proxy-qksn5 1/1 Running 0 3h32m
kube-system kube-scheduler-myubuntu 1/1 Running 1 3h32m
主节点可被调度 Pod
通过查看主节点信息,找到设置的污点信息
bash
kubectl describe node myubuntu | grep Taints
用类似以下命令删除:
bash
kubectl taint node myubuntu node-role.kubernetes.io/control-plane:NoSchedule-
创建个 pod 验收下
bash
kubectl create deployment nginx --image=nginx
kubectl get pod -A
kubectl 自动补全
-
打开终端,并编辑 ~/.bashrc 文件(或 ~/.bash_profile)
-
添加以下行来加载 kubectl 的自动补全脚本:
bashsource <(kubectl completion bash)
保存并关闭文件。
-
在终端中执行以下命令以使更改生效:
bashsource ~/.bashrc
其他
其他节点加入集群
没有其他节点,略