文章目录
-
- 一、环境准备
- 二、K8s安装和集群初始化
- 三、使用k8s 集调度运行pod
- 四、疑惑
-
- (1). kubectl get pods -o wide -A 是什么意思?
- (2). kubectl apply -f kube-flannel.yml 是什么意思?
- (3). k8s 中 node 和 pod 的区别?
- (4). `sysctl -f /etc/sysctl.d/k8s.conf` 什么意思?
- (5). `containerd config dump`和`containerd config default`有什么区别?
- (6). `kubectl kubelet kubeadm` 这几个的区别?
- (7). `kubeadm config images pull --config init.yml` 和 `crictl -r unix:///var/run/containerd/containerd.sock pull [registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8](http://registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8)` 的区别?
- (8). `containerd`的命名空间和`Kubernetes`命名空间有什么区别?
- (9). `kubectl get pods` 是什么意思?
- (10). `containerd`和`docker`的区别?
一、环境准备
设计思路
配置网络和ip
control: 192.168.110.10/24
node1: 192.168.110.11/24
node2: 192.168.110.22/24
GW: 192.168.110.2
DNS1: 114.114.114.114
DNS2: 223.5.5.5
从下面开始,所有的操作需要在三个节点上一起执行。
配置hosts文件
// 文件中新增以下三行
192.168.110.10 control
192.168.110.11 node1
192.168.110.22 node2
允许系统转发 ipv4 数据包
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/k8s.conf
# 读取文件内核配置
sysctl -f /etc/sysctl.d/k8s.conf
# 查看
sysctl net.ipv4.ip_forward
设置容器运行时
# 清理一下环境
dnf remove -y podman container* runc*
# 安装仓库配置命令行工具
dnf -y install dnf-utils
# 设置docker仓库,用来安装docker和containerd服务
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
dnf -y install docker-ce docker-ce-cli containerd.io
# 确保containerd服务开机自启
systemctl enable --now containerd.service
# 生成包含所有containerd默认设置的配置文件
containerd config default > /etc/containerd/config.toml
# 重启服务
systemctl restart containerd.service
编辑 /etc/containerd/config.toml
# 重启服务
systemctl restart containerd.service
禁用swap交换分区
swapoff -a
禁止交换分区在重启后挂载激活 vim /etc/fstab
禁用SELINUX
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
grep ^SELINUX= /etc/selinux/config
禁用防火墙
systemctl disable --now firewalld.service
nft flush ruleset
二、K8s安装和集群初始化
(1)安装k8s 安装工具的软件包
编辑所需的yum仓库 vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
安装Kubernetes及组件
dnf -y install kubectl kubelet kubeadm --disableexcludes=kubernetes
systemctl enable kubelet.service
(2) 集群初始化
获取初始化的默认配置
kubeadm config print init-defaults >> init.yml
更改镜像的地址
为加快集群初始化进程,提前下载集群运行的镜像
kubeadm config images pull --config init.yml
在集群初始化时,还是使用较早版本的pause:3.8 ,手动下载并修改镜像仓库标记即可。
拉取pause:3.8镜像 下面这条命令的作用等同于docker pull
crictl -r unix:///var/run/containerd/containerd.sock pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8
查看容器命名空间
ctr namespace list
改名,这条命令的作用等于docker tag
ctr --namespace k8s.io image tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8 registry.k8s.io/pause:3.8 registry.k8s.io/pause:3.8
查看所有containerd 可以使用的镜像
crictl -r unix:///var/run/containerd/containerd.sock images
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns # k8S 集群内部的域名解析
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd # 存储K8S集群的状态数据
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver # K8S的调用接口
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager # K8S 的控制器
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy #工作节点代理
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler # pod的调度
registry.cn-hangzhou.aliyuncs.com/google_con