栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

kubernetes安装,centos7安装kubernetes,linux安装k8s,kubenetes问题排查

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kubernetes安装,centos7安装kubernetes,linux安装k8s,kubenetes问题排查

kubernetes安装,centos7安装kubernetes,linux安装k8s
  • 一、环境准备
  • 二、首先安装docker(三台服务器都需要)
    • 1. 配置docker源
    • 2. docker镜像加速
    • 3. 加载docker镜像
  • 三、系统环境参数配置 (三台服务器都需要)
    • 1. 关闭防火墙
    • 2. 关闭selinux 和 关闭swap
    • 3. 每台主机分别设置主机 和 每个节点添加hosts(每台主机操作命令不同)
    • 4. 将桥接的IPv4流量传递到iptables的链
    • 5. 时间同步
  • 四、kubernetes安装
    • 1. 配置kubernetes阿里镜像源(三台都需要)
    • 2. 安装kubeadm、kubelet、kubectl
    • 3. kubeadm init初始化(master服务器执行)
    • 4. 复制配置文件并授权
    • 5. 应用kube-flannel.yml 文件
    • 6. 另外两个node节点连接主节点
    • 7. 集成calico网络组件(master服务器执行)
  • 五、kubernetes的一些命令和操作

一、环境准备

系统: Centos7.9
注意:使用centos7建议用Centos7.9版本,只有7.9版本维护中,其他版本已经停止维护了。
例如如果使用的已经是7.4,则可以使用命令升级系统内核,当然也可以不升级。:

#检查系统更新 和 升级系统内核
apt update && apt upgrade 

升级完成后可以通过命令:

#查看系统内核,如果是 7.9,则代表升级成功。
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

下面试三台Centos7.9主机:
192.168.23.136 master 主机器
192.168.23.137 node1 从机2
192.168.23.138 node2 从机3

二、首先安装docker(三台服务器都需要) 1. 配置docker源
yum install yum-utils -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io
2. docker镜像加速
#创建目录
mkdir -p /etc/docker
#添加镜像
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://xuv622op.mirror.aliyuncs.com"]
}
EOF
3. 加载docker镜像
systemctl daemon-reload
#启动docker并且设置开机启动
systemctl enable docker && systemctl start docker
三、系统环境参数配置 (三台服务器都需要) 1. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2. 关闭selinux 和 关闭swap
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
#关闭swap
swapoff -a
3. 每台主机分别设置主机 和 每个节点添加hosts(每台主机操作命令不同)

每台主机各自命令对号入座

hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2

每个节点都执行命令

cat >> /etc/hosts << EOF
192.168.23.136 master
192.168.23.137 node1
192.168.23.138 node2
EOF
4. 将桥接的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
5. 时间同步
yum install ntpdate -y
#使用国内时区
cp -f /usr/share/zoneinfo/Asia/Shanghai     /etc/localtime
#同步时区服务器
ntpdate ntp1.aliyun.com #阿里时区
四、kubernetes安装 1. 配置kubernetes阿里镜像源(三台都需要)
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
2. 安装kubeadm、kubelet、kubectl

所有节点安装kubeadmin、kubelet,仅在master节点上安装kubectl

yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet && systemctl start  kubelet
3. kubeadm init初始化(master服务器执行)

kubeadm参数详解参考:https://www.csdn.net/tags/MtjacgxsMzkzOTktYmxvZwO0O0OO0O0O.html#5_kubeadm_init__77

kubeadm init 
  --apiserver-advertise-address=192.168.23.136 
  --image-repository registry.aliyuncs.com/google_containers 
  --kubernetes-version v1.19.0 
  --service-cidr=10.96.0.0/12 
  --pod-network-cidr=10.244.0.0/16 
  --ignore-preflight-errors=all
4. 复制配置文件并授权

按照初始完成信息显示,执行命令:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
5. 应用kube-flannel.yml 文件

这个网址文件国内无法访问,需要翻墙。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

假如无法访问这个地址,可以保存至本地再应用,当前文件内容可以参考,找到kube-flannel.yml复制拷贝下来即可:
https://blog.csdn.net/wuyundong123/article/details/117064624

#新增文件
vi /opt/kube-flannel.yml
#按i键,进入输入模式
i 
#将复制的kube-flannel.yml内容粘贴后直接:wq保存
:wq

然后执行:

[root@localhost ~]# kubectl apply -f /opt/kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
6. 另外两个node节点连接主节点

找到master kubeadm init后,展示的命令:

node1和node2服务器执行

kubeadm join 192.168.23.136:6443 --token odhj6a.8zkww0lcd4wd049o 
    --discovery-token-ca-cert-hash sha256:c91275ae6ddb934748760e66a7b9c3f659104d7e46c730c2768074709a06a8f6

默认token有效期为24小时,当过期之后,该token就不可用了,需要重新创建token

kubeadm token create --print-join-command
7. 集成calico网络组件(master服务器执行)

可以参考:
https://projectcalico.docs.tigera.io/getting-started/kubernetes/quickstart
安装 Tigera Calico 运算符和自定义资源定义。
(如果报错net/http: TLS handshake timeout,则需要讲服务器或虚拟机内存加大些,内存小会报这个错)

kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml

通过创建必要的自定义资源来安装 Calico
(如果报错net/http: TLS handshake timeout,则需要讲服务器或虚拟机内存加大些,内存小会报这个错)

kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml

删除 master 上的 taint,以便您可以在其上安排 pod。

[root@localhost ~]# kubectl taint nodes --all node-role.kubernetes.io/master-
node/master untainted
taint "node-role.kubernetes.io/master" not found
taint "node-role.kubernetes.io/master" not found

出现 node/master untainted 就代表ok了。
执行命令,查看状态:

[root@localhost ~]# kubectl get cs
NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused   
etcd-0               Healthy     {"health":"true"}

查看状态 发现scheduler和controller-manager非正常状态
出现这种情况,是/etc/kubernetes/manifests/下的kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0导致的,解决方式是注释掉对应的port即可,操作如下:

cd /etc/kubernetes/manifests
vi kube-controller-manager.yaml

注释 --port=0

vi kube-scheduler.yaml

注释 --port=0

然后master执行命令:

#重启kubelet
systemctl restart kubelet
#再次检查状态
[root@localhost manifests]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"} 

使用命令 kubectl get nodes 发现 节点状态为 NotReady

[root@localhost manifests]# kubectl get nodes
NAME     STATUS     ROLES    AGE     VERSION
master   NotReady   master   10m     v1.19.0
node1    NotReady      3m45s   v1.19.0
node2    NotReady      3m41s   v1.19.0

如下解决办法:

#下载文件
wget https://docs.projectcalico.org/manifests/calico.yaml --no-check-certificate
vim calico.yaml

修改前:

修改后:

修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init指定的一样。
然后执行命令:

kubectl apply -f calico.yaml

然后需要等上几分钟,等待服务器完成配置和启动,再次查询nodes状态,则都Ready了!

[root@localhost tmp]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   23m   v1.19.0
node1    Ready       17m   v1.19.0
node2    Ready       17m   v1.19.0

上面步骤顺利完成kubernetes安装。

五、kubernetes的一些命令和操作

一些常用的命令:

 1. 查看pods分布的节点
     kubectl get pods -o wide
 2. 查看kubelet状态
     kubectl get cs
 3. 查询deployment
     kubectl get deploy 
 4. 删除deployment
     kubectl delete deploy xxx
 5. 查询所有services/svc
     kubectl get services/svc
 6. 查询所有的pods
     kubectl get nodes
 7. 删除service
     kubectl delete svc xxx
 8. 查询pod的log打印
     kubectl logs -f xxx

出现错误排查解决思路:

 1. 查询deploy详细信息或者报错信息
     kubectl describe deploy xxx
 2. 查询pod详细信息或者报错信息
     kubectl describe pod xxx
 3. 查询svc详细信息或者报错信息
     kubectl describe svc xxx
 4. 查看各个节点 docker运行状态
     systemctl status docker
 5. 检查kubectl运行状态
     systemctl status kubelet -l
 6. 检查防火墙状态
     systemctl status firewalld  
 7. 查看日志
     journalctl -xeu kubelet
 8. 查询详细信息
     kubectl describe pod/svc/deploy xxx    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825655.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号