TH小破站

  • 首页
  • 容器
    • 认识Docker
    • DockerFile详解
  • k8s
    • 认识Kubernetes
    • Kubernetes部署--(kubeadm方式)
    • kubeasz部署k8s集群
    • Ansible-binary部署k8s集群-1.31.2
  • Ceph
    • 认识分布式存储
    • CPEH部署
  • CI/CD
    • DevOps认识
    • 部署--Gitlab
  • ELK
    • ELK简介
    • Elasticsearch
    • Kibana部署
    • Logstash
    • ELK--收集 tomcat 日志(实战)
  • HD
    • 认识--大数据
    • Hadoop-单机部署
    • Hadoop-伪分布部署
    • Hadoop-完全分布部署
    • Hadoop-(HA)完全分布部署
    • Ambari自动部署--Hadoop
  • Nginx
    • Nginx功能介绍
    • Nginx安全选项
    • Nginx配置文件简单介绍
    • 网站服务器部署
  • 监控
    • ZABBIX-部署(yum)
    • ZABBIX-编译安装
  • 云计算
    • KVM 概述
    • OpenStack企业级部署(T版)
    • OpenStack之dashboard部署
    • OpenStack-controller的高可用
    • openstack(Caracal版_ubuntu版本)部署
  • 数据库
    • mariadb与mysql
    • mysql主从
    • MySQL--冷备(实战)
    • MySQL--热备(dump表)
    • MySQL--热备(dump库)
    • 数据恢复实战案例
    • Xtrabackup实现MySql8.x全量备份
    • MyCat实现数据库读写分离
    • MHA实现数据库高可用
    • Percona XtraDB(PXC)实现数据库集群高可用
    • 数据库压力测试
    • PostgreSQL 基操
    • PostgreSQL备份恢复
    • PostgreSQL高可用
    • MongDB安装配置基础使用
    • MongoDB实现复制集
    • MongoDB备份还原
  • 自动化
    • ssh远程服务原理及配置
    • Ansible剧本文件应用
    • Ansible管理服务介绍
    • Ansible自动化部署node_exporter(包含升级,回滚)
    • Saltstack-部署安装
  • 脚本
    • 一键查看服务器资源利用率
    • 一键生成SSL证书
    • 保存指定数量的文件/目录
    • 初始化服务器
    • 扫描可用IP
    • 批量分发SSH密钥
    • 监控多主机磁盘脚本
    • 一键安装MySQL8.x脚本
    • Python脚本监控ES集群
    • 资源巡检脚本
    • 查看各用户使用的cpu占比
热衷于分享
架构师成长之路 !!!
  1. 首页
  2. Kubernetes
  3. 正文

最新的kubernetes1.29.1部署-(kubeadm方式)

2024年2月6日 1067点热度 0人点赞 0条评论

kubeadm-1.29.1部署

kubeadm方式安装最新版k8s-1.29.1(containerd容器运行时)

containerd-1.6.27 + k8s-1.29.1(最新)(kubeadm方式)

架构说明

主机名 IP地址 资源
k8s-master 192.168.139.30 2c/3g-80g
k8s-node1 192.168.139.31 2c/3g-80g
k8s-node2 192.168.139.32 2c/3g-80g
k8s-node3 192.168.139.33 2c/3g-80g

前期服务器配置

  • 四台服务器都要配置

`修改主机名`
hostnamectl set-hostname [主机名] && su -
`添加hosts解析`
cat >> /etc/hosts << EOF
192.168.139.30 k8s-master
192.168.139.31 k8s-node1
192.168.139.32 k8s-node2
192.168.139.33 k8s-node3
EOF
`同步时间`
yum -y install ntp
systemctl enable ntpd --now
`永久关闭seLinux(需重启系统生效)`
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
`永久关闭swap(需重启系统生效)`
swapoff -a  # 临时关闭
sed -i 's/.*swap.*/#&/g' /etc/fstab # 永久关闭
`更新阿里源`
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
`升级内核为5.4版本(需重启系统生效)`
# https://elrepo.org/tiki/kernel-lt
# https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-6.el7.elrepo.noarch.rpm
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum --enablerepo=elrepo-kernel install -y kernel-lt
reboot
`关闭防火墙、清空iptables规则`
systemctl disable --now firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X && iptables -P FORWARD ACCEPT
`关闭 NetworkManager`
systemctl disable --now NetworkManager
`加载IPVS模块`
yum -y install ipset ipvsadm
mkdir -p /etc/sysconfig/modules
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
modprobe -- nf_conntrack
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -E 'ip_vs|nf_conntrack'
`开启br_netfilter、ipv4 路由转发`
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
# 应用 sysctl 参数而不重新启动
sysctl -p /etc/sysctl.d/k8s.conf
# 查看是否生效
lsmod | grep br_netfilter
lsmod | grep overlay
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
`内核调优`
cat > /etc/sysctl.d/99-sysctl.conf << 'EOF'
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
kernel.sysrq = 1
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.lo.disable_ipv6=0
kernel.numa_balancing = 0
kernel.shmmax = 68719476736
kernel.printk = 5
net.core.rps_sock_flow_entries=8192
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_local_reserved_ports=60001,60002
net.core.rmem_max=16777216
fs.inotify.max_user_watches=524288
kernel.core_pattern=core
net.core.dev_weight_tx_bias=1
net.ipv4.tcp_max_orphans=32768
kernel.pid_max=4194304
kernel.softlockup_panic=1
fs.file-max=3355443
net.core.bpf_jit_harden=1
net.ipv4.tcp_max_tw_buckets=32768
fs.inotify.max_user_instances=8192
net.core.bpf_jit_kallsyms=1
vm.max_map_count=262144
kernel.threads-max=262144
net.core.bpf_jit_enable=1
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_wmem=4096 12582912    16777216
net.core.wmem_max=16777216
net.ipv4.neigh.default.gc_thresh1=2048
net.core.somaxconn=32768
net.ipv4.neigh.default.gc_thresh3=8192
net.ipv4.ip_forward=1
net.ipv4.neigh.default.gc_thresh2=4096
net.ipv4.tcp_max_syn_backlog=8096
net.bridge.bridge-nf-call-iptables=1
net.ipv4.tcp_rmem=4096  12582912        16777216
EOF
# 应用 sysctl 参数而不重新启动
sysctl --system
`设置资源配置文件`
cat >> /etc/security/limits.conf << 'EOF'
* soft nofile 100001
* hard nofile 100002
root soft nofile 100001
root hard nofile 100002
* soft memlock unlimited
* hard memlock unlimited
* soft nproc 254554
* hard nproc 254554
* soft sigpending 254554
* hard sigpending 254554
EOF

部署1.29.1

安装containerd-1.6.27(官方源)

  • 四台服务器都要配置

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache
yum list containerd.io --showduplicates | sort -r
yum -y install containerd.io-1.6.27
containerd config default | sudo tee /etc/containerd/config.toml
# 修改cgroup Driver为systemd
sed -ri 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml
# 更改sandbox_image(替换为阿里云镜像)
sed -ri 's#registry.k8s.io\/pause:3.6#registry.aliyuncs.com\/google_containers\/pause:3.9#' /etc/containerd/config.toml

添加镜像加速

docker.io 镜像加速
`指定配置文件目录`
sed -i 's/config_path = ""/config_path = "\/etc\/containerd\/certs.d\/"/g' /etc/containerd/config.toml
`配置加速`
mkdir -p /etc/containerd/certs.d/docker.io
cat > /etc/containerd/certs.d/docker.io/hosts.toml << 'EOF'
server = "https://docker.io" # 源镜像地址
​
[host."https://xk9ak4u9.mirror.aliyuncs.com"] # 阿里-镜像加速地址
  capabilities = ["pull","resolve"]
​
[host."https://docker.m.daocloud.io"] # 道客-镜像加速地址
  capabilities = ["pull","resolve"]
​
[host."https://dockerproxy.com"] # 镜像加速地址
  capabilities = ["pull", "resolve"]
​
[host."https://docker.mirrors.sjtug.sjtu.edu.cn"] # 上海交大-镜像加速地址
  capabilities = ["pull","resolve"]
​
[host."https://docker.mirrors.ustc.edu.cn"] # 中科大-镜像加速地址
  capabilities = ["pull","resolve"]
​
[host."https://docker.nju.edu.cn"] # 南京大学-镜像加速地址
  capabilities = ["pull","resolve"]
​
[host."https://registry-1.docker.io"]
  capabilities = ["pull","resolve","push"]
EOF
registry.k8s.io 镜像加速
mkdir -p /etc/containerd/certs.d/registry.k8s.io
cat > /etc/containerd/certs.d/registry.k8s.io/hosts.toml << 'EOF'
server = "https://registry.k8s.io"
​
[host."https://k8s.m.daocloud.io"]
  capabilities = ["pull", "resolve", "push"]
EOF
quay.io 镜像加速
mkdir -p /etc/containerd/certs.d/quay.io
cat > /etc/containerd/certs.d/quay.io/hosts.toml << 'EOF'
server = "https://quay.io"
​
[host."https://quay.m.daocloud.io"]
  capabilities = ["pull", "resolve", "push"]
EOF
docker.elastic.co镜像加速
mkdir -p /etc/containerd/certs.d/docker.elastic.co
tee /etc/containerd/certs.d/docker.elastic.co/hosts.toml << 'EOF'
server = "https://docker.elastic.co"
​
[host."https://elastic.m.daocloud.io"]
  capabilities = ["pull", "resolve", "push"]
EOF

重新加载配置

systemctl daemon-reload
systemctl enable --now containerd 
systemctl restart containerd
systemctl is-active containerd

镜像加速配置无需重启服务,即可生效

设置crictl

cat << EOF >> /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: false
EOF

安装k8s(kubeadm-1.29.1、kubelet-1.29.1、kubectl-1.29.1)(官方源)(centos-7.9 )

  • 四台服务器都要配置

配置源

cat > /etc/yum.repos.d/kubernetes.repo << 'EOF'
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=0
EOF
yum makecache

下载kubeadm-1.29.1、kubelet-1.29.1、kubectl-1.29.1

yum -y install kubeadm-1.29.1 kubelet-1.29.1 kubectl-1.29.1
systemctl enable --now kubelet

初始化 k8s-1.29.1 集群

  • master节点操作

查看所需镜像列表

[root@k8s-master ~]# kubeadm config images list --kubernetes-version v1.29.1
registry.k8s.io/kube-apiserver:v1.29.1
registry.k8s.io/kube-controller-manager:v1.29.1
registry.k8s.io/kube-scheduler:v1.29.1
registry.k8s.io/kube-proxy:v1.29.1
registry.k8s.io/coredns/coredns:v1.11.1
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.10-0

拉取镜像

crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.29.1
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.29.1
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.29.1
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.29.1
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
crictl pull  registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.10-0
crictl pull  registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1

初始化

[root@k8s-master ~]# kubeadm init \
--apiserver-advertise-address=192.168.139.30 \
--apiserver-bind-port=6443 \
--cri-socket=unix:///var/run/containerd/containerd.sock \
--kubernetes-version=v1.29.1 \
--pod-network-cidr=10.100.0.0/16 \
--service-cidr=10.200.0.0/16 \
--service-dns-domain=stangjedu.local \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--ignore-preflight-errors=swap
​
#-------------------------------保存下列信息---------------------------
Your Kubernetes control-plane has initialized successfully!
​
To start using your cluster, you need to run the following as a regular user:
​
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
​
Alternatively, if you are the root user, you can run:
​
  export KUBECONFIG=/etc/kubernetes/admin.conf
​
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
​
Then you can join any number of worker nodes by running the following on each as root:
​
kubeadm join 192.168.139.30:6443 --token f8s9d0.v2k17432216ya8yc \
    --discovery-token-ca-cert-hash sha256:f487e29e6848b8a4ca29422c6b52ebd67cba93f93c2183c08288f78b84fd7187 
#---------------------------------------------------------------

配置 kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装 k8s 集群网络(calico)

  • master节点操作

  • 查看calico与k8s的版本对应关系:https://docs.tigera.io/calico/3.27/getting-started/kubernetes/requirements

这里k8s-1.29.1,所以使用calico-v3.27.0版本(版本对应很关键)

下载calico.yaml

[root@k8s-master ~]# mkdir -p ~/calico-yml
[root@k8s-master ~]# cd ~/calico-yml 
[root@k8s-master calico-yml]# wget https://github.com/projectcalico/calico/raw/v3.27.0/manifests/calico.yaml

修改calico.yaml

[root@k8s-master calico-yml]# vim calico.yaml
.......
            - name: CALICO_IPV4POOL_CIDR
              value: "10.100.0.0/16"     # pod的地址段
.......
            - name: CLUSTER_TYPE
              value: "k8s,bgp"      # 在这两行下面添加
            - name: IP_AUTODETECTION_METHOD
              value: "interface=eth0"    # eth.*为本地网卡名字(自己机器啥网卡就改啥)也可以eth.*表示通配
.......
kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: calico-node
  ........
        k8s-app: calico-node        # 在这一行下面添加下面两行
      annotations:
        unsupported.operator.tigera.io/ignore: "true"
......

应用calico.yaml

[root@k8s-master calico-yml]# kubectl apply -f calico.yaml 

验证

[root@k8s-master calico-yml]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-5fc7d6cf67-85ncd   1/1     Running   0          2m12s
kube-system   calico-node-8gdg6                          1/1     Running   0          2m12s
kube-system   coredns-5f98f8d567-4zksc                   1/1     Running   0          32m
kube-system   coredns-5f98f8d567-nl5fc                   1/1     Running   0          32m
kube-system   etcd-k8s-master                            1/1     Running   0          32m
kube-system   kube-apiserver-k8s-master                  1/1     Running   0          32m
kube-system   kube-controller-manager-k8s-master         1/1     Running   0          32m
kube-system   kube-proxy-7bfl2                           1/1     Running   0          32m
kube-system   kube-scheduler-k8s-master                  1/1     Running   0          32m

增加node节点

  • 在node节点执行

[root@k8s-node1 ~]# kubeadm join 192.168.139.30:6443 --token f8s9d0.v2k17432216ya8yc --discovery-token-ca-cert-hash sha256:f487e29e6848b8a4ca29422c6b52ebd67cba93f93c2183c08288f78b84fd7187 
`master节点验证`
[root@k8s-master ~]# kubectl get node
NAME         STATUS     ROLES           AGE     VERSION
k8s-master   Ready      control-plane   41m     v1.29.1
k8s-node1    NotReady   <none>          2m13s   v1.29.1  # 这个是NotReady是因为calico网络主键还没拉取下来,需要等一会
[root@k8s-node2 ~]# kubeadm join 192.168.139.30:6443 --token f8s9d0.v2k17432216ya8yc --discovery-token-ca-cert-hash sha256:f487e29e6848b8a4ca29422c6b52ebd67cba93f93c2183c08288f78b84fd7187 
[root@k8s-node3 ~]# kubeadm join 192.168.139.30:6443 --token f8s9d0.v2k17432216ya8yc --discovery-token-ca-cert-hash sha256:f487e29e6848b8a4ca29422c6b52ebd67cba93f93c2183c08288f78b84fd7187 
  • 验证

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   49m     v1.29.1
k8s-node1    Ready    <none>          10m     v1.29.1
k8s-node2    Ready    <none>          6m13s   v1.29.1
k8s-node3    Ready    <none>          3m27s   v1.29.1

验证网络通信

[root@k8s-master ~]# kubectl run test-pod1 --image=alpine sleep 400000
[root@k8s-master ~]# kubectl run test-pod2 --image=alpine sleep 400000
[root@k8s-master ~]# kubectl run test-pod3 --image=alpine sleep 400000
[root@k8s-master ~]# kubectl get pod  -o wide
NAME        READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
test-pod1   1/1     Running   0          83s   10.100.36.65     k8s-node1   <none>           <none>
test-pod2   1/1     Running   0          78s   10.100.107.193   k8s-node3   <none>           <none>
test-pod3   1/1     Running   0          73s   10.100.169.129   k8s-node2   <none>           <none>
[root@k8s-master ~]# kubectl exec -it test-pod1 sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # ping 10.100.107.193
PING 10.100.107.193 (10.100.107.193): 56 data bytes
64 bytes from 10.100.107.193: seq=0 ttl=62 time=0.488 ms
​
/ # ping 10.100.169.129
PING 10.100.169.129 (10.100.169.129): 56 data bytes
64 bytes from 10.100.169.129: seq=0 ttl=62 time=0.579 ms

coredns 解析测试是否正常

/ # ping www.baidu.com
PING www.baidu.com (110.242.68.4): 56 data bytes
64 bytes from 110.242.68.4: seq=0 ttl=127 time=71.823 ms
64 bytes from 110.242.68.4: seq=1 ttl=127 time=73.022 ms
64 bytes from 110.242.68.4: seq=2 ttl=127 time=67.093 ms
64 bytes from 110.242.68.4: seq=3 ttl=127 time=69.796 ms
/ # nslookup kubernetes
Server:     10.200.0.10
Address:    10.200.0.10:53
​
​
Name:   kubernetes.default.svc.stangjedu.local
Address: 10.200.0.1
​
** server can't find kubernetes.svc.stangjedu.local: NXDOMAIN
​
** server can't find kubernetes.stangjedu.local: NXDOMAIN
​
** server can't find kubernetes.stangjedu.local: NXDOMAIN
​
** server can't find kubernetes.svc.stangjedu.local: NXDOMAIN

查看token

# 列出现有的token
kubeadm token list
# 创建新的token
kubeadm token create --print-join-command
标签: 暂无
最后更新:2024年2月6日

tanghao946

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • kubeadm-1.29.1部署
    • 架构说明
    • 前期服务器配置
    • 部署1.29.1
      • 安装containerd-1.6.27(官方源)
      • 安装k8s(kubeadm-1.29.1、kubelet-1.29.1、kubectl-1.29.1)(官方源)(centos-7.9 )
      • 初始化 k8s-1.29.1 集群
      • 安装 k8s 集群网络(calico)
      • 增加node节点
      • 验证网络通信
      • coredns 解析测试是否正常
      • 查看token

COPYRIGHT © 2025 TH小破站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

渝ICP备2023013789号

渝公网安备50011702500926号