k8s v1.28.15安装---test--ok---20250819
#现在主要是外网限制,引起的各种安装麻烦,如果有梯子,应该很简单。
#环境:centos7.9 + Docker version 26.1.4 + k8s-v1.28.15
#原则是:全使用yum安装和直接安装,简单点
#k8s的repo源是https://mirrors.aliyun.com ,注意地址说明
#https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.25971b11TFhCoA
#aliyun老地址最高支持k8s-v1.28.15 新地址支持k8s-v1.33.4
#机器和host准备:硬件配置:大于等于2GB+2个CPU,硬盘 >= 20G
#master-192.168.9.10
#node1-192.168.9.11
#node2-192.168.9.12
#harbor-192.168.9.13
#kuboard-192.168.9.14
#端口使用:
kubelet 10250 10248
kube-controller 127.0.0.1:10257
kube-schedule 10259
kube-proxy 10256 127.0.0.1:10249
kube-apiserver 6443
etcd 2379 2380 2381
#参考教程:
#https://zhuanlan.zhihu.com/p/675796199
#初始配置(所有主机)
#主机配置主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
#修改hosts文件
cat >> /etc/hosts << EOF
192.168.9.10 master
192.168.9.11 node1
192.168.9.12 node2
192.168.9.13 harbor
EOF
#永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab
#允许 iptables 检查桥接流量
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
#添加阿里云 yum 源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#常用配置
yum install -y bash-completion wget vim-enhanced net-tools ntpdate
ntpdate ntp1.aliyun.com
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sysctl -p
#固定IP
sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "IPADDR=192.168.9.10
NETMASK=255.255.255.0
GATEWAY=192.168.9.2
DNS1=192.168.9.2" >>/etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
# 安装,本文安装1.28.15版本,可以指定其他版本进行安装
yum install -y kubeadm-1.18.8 kubelet-1.18.8 kubectl-1.18.8 ipvsadm
## sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes --nogpgcheck
# 自启
sudo systemctl enable kubelet
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"data-root": "/data/var/lib/docker",
"log-opts": {
"max-size": "100m"
},
"insecure-registries": ["http://192.168.200.205"],
"storage-driver": "overlay2"
}
EOF
#kubeadm init:可以直接执行,自动去拉取镜像,再安装。
#k8s集群安装,主要是镜像源,默认地址为国外,通过先docker pull,再tag,就行。
#https://blog.csdn.net/qq_34761385/article/details/142178682
#查看当前系统需要的k8s相关镜像版本:
#[root@master ~]# kubeadm config images list
#I0818 11:54:00.561459 4041 version.go:256] remote version is much newer: v1.33.4; falling back to: stable-1.28
#registry.k8s.io/kube-apiserver:v1.28.15
#registry.k8s.io/kube-controller-manager:v1.28.15
#registry.k8s.io/kube-scheduler:v1.28.15
#registry.k8s.io/kube-proxy:v1.28.15
#registry.k8s.io/pause:3.9
#registry.k8s.io/etcd:3.5.9-0
#registry.k8s.io/coredns/coredns:v1.10.1
#这里检测是3.9,但是Init时,后台默认下载3.6,好奇怪。经测试。因containerd.io 1.6.33配置里默认是3.6 :containerd config default |grep k8s
#====前置环境配置完成========================
#====开始安装master========================
#直接安装master
kubeadm init --image-repository registry.aliyuncs.com/google_containers
#
#查看执行日志:
#journalctl -fxe
#报错:
#[ERROR CRI]: container runtime is not running
#Containerd服务:在安装docker时,已经安装了,主要是配置问题
#解决方法:https://blog.csdn.net/qq_42257666/article/details/143894958
#vim /etc/containerd/config.toml
#将原先的disabled_plugins = [“cri”]复制粘贴后注释掉,然后删除中括号内的"cri",保存并退出。
sed -i 's/"cri"//' /etc/containerd/config.toml
systemctl restart containerd
#报错:
#[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
#[kubelet-check] Initial timeout of 40s passed.
#需要提前下载好pause:3.6,不然一直卡在:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 registry.k8s.io/pause:3.6
docker save -o pause.tar registry.k8s.io/pause:3.6
ctr -n k8s.io images import pause.tar
echo y | kubeadm reset
#问题七: kubelet报错/var/lib/kubelet/config.yaml不存在,
#在执行kubeadm init 或kubeadm join之前,会发现启动的kubelet日志报错,读不到配置文件/var/lib/kubelet/config.yaml。不用担心,执行完kubeadm init/join之后,会自动生成配置文件。
#再次执行
kubeadm init --image-repository registry.aliyuncs.com/google_containers
yum install -y kubeadm kubelet kubectl ipvsadm
#========================================
#常用 Kubernetes 命令整理
kubeadm config images list
kubeadm token list
#查看集群状态
kubectl get nodes
kubectl get pods -A
#节点管理
kubectl get nodes # 查看节点状态
kubectl describe node <node-name> # 查看节点详细信息
kubectl cordon <node-name> # 标记节点不可调度
kubectl uncordon <node-name> # 标记节点可调度
kubectl drain <node-name> # 驱逐节点上的 Pod,准备维护
# Pod 和服务管理
kubectl get pods -A # 查看所有命名空间的 Pod
kubectl get pods # 查看当前命名空间 Pod
kubectl describe pod <pod-name> # 查看 Pod 详细信息
kubectl logs <pod-name> # 查看 Pod 日志
kubectl exec -it <pod-name> -- bash # 进入 Pod 容器终端
#部署与管理应用
kubectl apply -f <filename.yaml> # 创建或更新资源
kubectl delete -f <filename.yaml> # 删除资源
kubectl rollout status deployment/<deployment-name> # 查看滚动更新状态
kubectl scale deployment/<name> --replicas=3 # 扩缩容
#集群信息查看
kubectl cluster-info # 查看集群信息
kubectl get namespaces # 查看命名空间列表
kubectl get svc # 查看服务
yum reinstall -y kubernetes-cni
#===另类安装,也不成功=========================
#kubeadm config print init-defaults >> kubeadm.conf
#sed -i "s#imageRepository: .*#imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers#g" kubeadm.conf
#kubeadm config images pull --config kubeadm.conf
#kubeadm init --config kubeadm.conf
#kubeadm init \
# --apiserver-advertise-address=192.168.9.10 \
# --image-repository registry.aliyuncs.com/google_containers \
# --kubernetes-version v1.28.2 \
# --service-cidr=10.10.0.0/16 \
# --pod-network-cidr=10.244.0.0/16 \
# --ignore-preflight-errors=all