安装 kubelet kubeadm kubectl
K8s 集群的每个 node 上都要安装的
官方文档参考: https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl
配置 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 |
官方文档参考: https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#%E8%BD%AC%E5%8F%91-ipv4-%E5%B9%B6%E8%AE%A9-iptables-%E7%9C%8B%E5%88%B0%E6%A1%A5%E6%8E%A5%E6%B5%81%E9%87%8F
2. containerd 相关配置
先生成默认的配置:
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
官方文档参考:https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#%E8%BD%AC%E5%8F%91-ipv4-%E5%B9%B6%E8%AE%A9-iptables-%E7%9C%8B%E5%88%B0%E6%A1%A5%E6%8E%A5%E6%B5%81%E9%87%8F
配置 kubelet 的 cgroup 驱动
Kubernetes v1.28 默认已经是
官方文档参考: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/#%E9%85%8D%E7%BD%AE-kubelet-%E7%9A%84-cgroup-%E9%A9%B1%E5%8A%A8
kubeadm 安装 K8s
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 后,会有不少信息输出,按这些信息提示操作
安装网络插件
kubectl apply -f https://github.com/flannel-io/flannel/releases/download/v0.23.0/kube-flannel.yml
验收
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
通过查看主节点信息,找到设置的污点信息
kubectl describe node myubuntu | grep Taints
用类似以下命令删除:
kubectl taint node myubuntu node-role.kubernetes.io/control-plane:NoSchedule-
创建个 pod 验收下
kubectl create deployment nginx --image=nginx
kubectl get pod -A
kubectl 自动补全
- 打开终端,并编辑 ~/.bashrc 文件(或 ~/.bash_profile)
- 添加以下行来加载 kubectl 的自动补全脚本:
保存并关闭文件。source <(kubectl completion bash)
- 在终端中执行以下命令以使更改生效:
source ~/.bashrc
其他
其他节点加入集群
没有其他节点,略