9.11
安装k8s
1、创建主机,设置ip,hostname,firewalld selinux, Networkmanage
2、设置主机之间的免密
编号 | 主机名称 | IP | |
---|---|---|---|
1 | k8s-master | 192.168.1.14 | |
2 | k8s-node1 | 192.168.1.12 | |
3 | k8s-node2 | 192.168.1.13 |
3、yum源配置
四个源镜像
3、清空及建立缓存
4、主机映射
vim /etc/hosts
...
192.168.1.12 k8s-master
192.168.1.13 k8s-node1
192.168.1.14 k8s-node2
5、安装工具,三台机器
# yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git tree -y
6、关闭防火墙,Networkmanager selinux swap分区,都
7、同步时间
yum -y install ntpdate ntpdate time2.aliyun.com crontab -e */5**** /usr/sbin/ntpdate time2.aliyun.com
8、配置limit
vim /etc/security/limits/conf ... * soft nofile 65536 * hard nofile 131072 * soft nproc 65535 * hard nproc 655350 * soft memlock unlimited * hard memlock unlimited
9、载yaml,从gitee上下载,配置的pod的yaml文件和docker-comppose.yaml文件相似,等k8s架构搭建起来后,
# cd /root/ ; git clone https://gitee.com/dukuan/k8s-ha-install.git
10、配置ipvs模块,三个豆
# yum install ipvsadm ipset sysstat conntrack libseccomp -y #vim /etc/modules-load.d/.... 复制粘贴 。。。
11、重启
reboot
12、卸载podman ,安装 docker-ce docker-ce-cli containerd
yum -y remove podman yum -y install docker-ce docker-ce-cli container-io
13、配置containerd
#cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf > overlay > br_netfilter > EOF overlay br_netfilter 您在 /var/spool/mail/root 中有新邮件 # modprobe overlay # modprobe br_netfilter
14、containerd配置文件
# vim /etc/containerd/config.toml 63行和127行
15、启动服务,查看状态
# systemctl enable --now containerd.service # systemctl status containerd.service
16、安装kubernet组件
# yum -y install kubeadm-1.28* kubectl-1.28* kubelet-1.28* 查看安装完整 #yum list installed | grep kube # systemctl daemon-reload # systemctl enable --now kubelet
若kubelet启动异常,先检查swap是否已经取消虚拟分区,查看/var/lib/message,如果是没有/var/lib/kubelet/config.yaml文件,可能需要重新安装,
yum -y remove kubelet-1.28* yum -y install kubelet-1.28* systemctl daemob-reload systemctl enable --now kubelet yum -y install kubeadm-1.28* #kubelet端口是10248 10250 10255三个端口
接下来主要对master主机
17、集群初始化
--拉取镜像 # vim kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta3 # 指定Kubernetes配置文件的版本,使用的是kubeadm API的v1beta3版本 bootstrapTokens: # 定义bootstrap tokens的信息。这些tokens用于在Kubernetes集群初始化过程中进行身份验证 - groups: # 定义了与此token关联的组 - system:bootstrappers:kubeadm:default-node-token token: 7t2weq.bjbawausm0jaxury # bootstrap token的值 ttl: 24h0m0s # token的生存时间,这里设置为24小时 usages: # 定义token的用途 - signing # 数字签名 - authentication # 身份验证 kind: InitConfiguration # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置 localAPIEndpoint: # 定义本地API端点的地址和端口 advertiseAddress: 192.168.1.14 bindPort: 6443 nodeRegistration: # 定义节点注册时的配置 criSocket: unix:///var/run/containerd/containerd.sock # 容器运行时(CRI)的套接字路径 name: k8s-master # 节点的名称 taints: # 标记 - effect: NoSchedule # 免调度节点 key: node-role.kubernetes.io/control-plane # 该节点为控制节点 --- apiServer: # 定义了API服务器的配置 certSANs: # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可 - 192.168.15.11 timeoutForControlPlane: 4m0s # 控制平面的超时时间,这里设置为4分钟 apiVersion: kubeadm.k8s.io/v1beta3 # 指定API Server版本 certificatesDir: /etc/kubernetes/pki # 指定了证书的存储目录 clusterName: kubernetes # 定义了集群的名称为"kubernetes" controlPlaneEndpoint: 192.168.1.14:6443 # 定义了控制节点的地址和端口 controllerManager: {} # 控制器管理器的配置,为空表示使用默认配置 etcd: # 定义了etcd的配置 local: # 本地etcd实例 dataDir: /var/lib/etcd # 数据目录 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜像仓库。 kind: ClusterConfiguration # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置 kubernetesVersion: v1.28.2 # 指定了kubernetes的版本 networking: # 定义了kubernetes集群网络设置 dnsDomain: cluster.local # 定义了集群的DNS域为:cluster.local podSubnet: 172.16.0.0/16 # 定义了Pod的子网 serviceSubnet: 10.96.0.0/16 # 定义了服务的子网 scheduler: {} # 使用默认的调度器行为 您在 /var/spool/mail/root 中有新邮件 # kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml --集群初始化 #kubeadm init --config /root/new.yaml --upload-certs #vim token kubeadm join 192.168.1.14:6443 --token 7t2weq.bjbawausm0jaxury \ --discovery-token-ca-cert-hash sha256:0c3d37890b7bc36002cf53083f2739e1d717ebf10988020ae19b4af9d000db97 保存token
初始化不成功的,1、主机配置2核2G40G,20G凑合用2、echo 1 > /proc/net/ipv4/ip_forward3、kubelet无法启动,可能是swap分区没关或者是没有配置文件4、多关注vim /var/log/message
[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf您在 /var/spool/mail/root 中有新邮件[root@master ~]# kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster NotReady control-plane 44m v1.28.2node1 NotReady <none> 76s v1.28.2node2 NotReady <none> 65s v1.28.2
添加不成功,原因
1、kubelet没有stop
2、IP转发没有
3、token重新初始化或者生成token
4、node中的containderd是否正常
18、查看节点以及pod状态
#查看节点 查看在集群中的主机的状态 # kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady control-plane 44m v1.28.2 node1 NotReady <none> 76s v1.28.2 node2 NotReady <none> 65s v1.28.2 #查看所有的pod的状态 #kubelet get po -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6554b8b87f-5lt5x 0/1 Pending 0 49m kube-system coredns-6554b8b87f-dqx6t 0/1 Pending 0 49m kube-system etcd-master 1/1 Running 0 49m kube-system kube-apiserver-master 1/1 Running 0 49m kube-system kube-controller-manager-master 1/1 Running 0 49m kube-system kube-proxy-5rwvt 1/1 Running 0 49m kube-system kube-proxy-5x555 1/1 Running 0 5m39s kube-system kube-proxy-g79tw 1/1 Running 0 5m28s kube-system kube-scheduler-master 1/1 Running 0 49m #查看pod完整信息 # kubectl get po -Aowide NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system coredns-6554b8b87f-5lt5x 0/1 Pending 0 56m <none> <none> <none> <none> kube-system coredns-6554b8b87f-dqx6t 0/1 Pending 0 56m <none> <none> <none> <none> kube-system etcd-master 1/1 Running 0 57m 192.168.1.14 master <none> <none> kube-system kube-apiserver-master 1/1 Running 0 57m 192.168.1.14 master <none> <none> kube-system kube-controller-manager-master 1/1 Running 0 57m 192.168.1.14 master <none> <none> kube-system kube-proxy-5rwvt 1/1 Running 0 56m 192.168.1.14 master <none> <none> kube-system kube-proxy-5x555 1/1 Running 0 13m 192.168.1.12 node1 <none> <none> kube-system kube-proxy-g79tw 1/1 Running 0 13m 192.168.1.13 node2 <none> <none> kube-system kube-scheduler-master 1/1 Running 0 57m 192.168.1.14 master <none> <none>
status:
状态名称 | 中文 | 说明 |
---|---|---|
pending | 挂起 | 当前pod没有工作 |
running | 运行中 | 当前pod正常工作 |
containercreating | 正在创建容器 | 正在创建容器 |
19、部署calico