ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

CentOS7 单机版使用kubeadm安装K8S

2022-06-14 16:32:22  阅读:207  来源: 互联网

标签:单机版 etc -- CentOS7 kubelet systemctl kubeadm docker


准备一台干干净净的服务器

准备环境

-----------------------------------------------------------------------------------------

为了安全,先把SSH端口默认的22端口修改了

vi /etc/ssh/sshd_config

修改Port,在服务器的安全策略组中把修改后的端口加进去

重启SSHD服务

service sshd restart

----------------------------------------------------------------------------------------

修改主机名,并在hosts文件中加一行主机名的解析,重启服务器使配置生效

hostnamectl set-hostname master
hostnamectl status
vi /etc/hosts
reboot

-----------------------------------------------------------------------------------------

关闭防火墙、selinux、swap

systemctl stop firewalld
systemctl disable firewalld

sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0

swapoff -a

------------------------------------------------------------------------------------------

将桥接的IPv4流量传递到iptables的链:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

yum update -y

------------------------------------------------------------------------------------------

安装Docker (不加版本号默认安装最新的,当下安装是20.10.17)

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce

systemctl enable docker && systemctl start docker

------------------------------------------------------------------------------------------

安装K8s

先添加阿里云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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

------------------------------------------------------------------------------------------

安装Kubeadm、Kubelet、Kubectl

*注:由于版本更新很频繁,不加版本号的话默认安装最新,官方对于1.24版本声明如下:

 

 

此处,咱使用的是1.23.6版本(主要是1.24.1后续问题太多了。。。。。)

 

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6

systemctl enable kubelet

kubeadm初始化

注:国内无法访问默认的拉取镜像地址k8s.gcr.io,所以这里替换成阿里云镜像仓库的地址(如果有外网环境,当我没说)
kubeadm init  --apiserver-advertise-address=192.168.0.3  --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.23.6   --service-cidr=10.1.0.0/16   --pod-network-cidr=10.244.0.0/16

 

到这一步跑着跑着可能就出现问题了。。错误日志如下

[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 192.168.0.3:10248: connect: connection refused.
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 192.168.0.3:10248: connect: connection refused.

        Unfortunately, an error has occurred:
                timed out waiting for the condition

        This error is likely caused by:
                - The kubelet is not running
                - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

        If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
                - 'systemctl status kubelet'
                - 'journalctl -xeu kubelet'

        Additionally, a control plane component may have crashed or exited when started by the container runtime.
        To troubleshoot, list all containers using your preferred container runtimes CLI.

        Here is one example how you may list all Kubernetes containers running in docker:
                - 'docker ps -a | grep kube | grep -v pause'
                Once you have found the failing container, you can inspect its logs with:
                - 'docker logs CONTAINERID'

------------------------------------------------------------------------------------------------------------------

重置

kubeadm reset

 ------------------------------------------------------------------------------------------------------------------

解决问题

问题原因: 因为docker和 kubelet 服务中的 cgroup 驱动不一致

解决方案:

1、修改docker配置

vi /etc/docker/daemon.json

加入这段

{
    "exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker

systemctl daemon-reload
 
systemctl restart docker

2、修改kubelet配置

vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

加入这段

Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=cgroupfs"

重启kubelet

systemctl daemon-reload
 
systemctl restart kubelet

 

再次执行上面的kubeadm init --XXXXXXXXXXXXXXX 就妥了~~~~~~

 

标签:单机版,etc,--,CentOS7,kubelet,systemctl,kubeadm,docker
来源: https://www.cnblogs.com/NinaMua/p/16374893.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有