k8s系列 - 1.安装、换源、重置

安装需要一定的顺序

1. 切换到root账户

sudo su -

2. 安装 三大组件及依赖

  • 内网安装
    dkpg -i cri-tools_xxxx.deb
    dkpg -i kubernets-cni_xxxx.deb
    dkpg -i ebtables_xxx.deb
    dkpg -i ethtool_xxx.deb
    dkpg -i conntrack_xxx.deb
    dkpg -i kubelet_1.18.2_xx.deb
    dkpg -i kubectl_1.18.2_xx.deb
    dkpg -i kubeadm_1.18.2_xx.deb
  • 外网安装
## ubuntu
apt-get update && apt-get install -y apt-transport-https
curl http://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF > /etc/apt/source.list.d/kubernetes.list
deb http://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt-get update
apt-get install -y kubelet kubeadm kubectl

## centos
1. 关闭 seliunx
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
2. 换源
sudo cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=kubernetes
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
EOF
sudo yum install kubeadm kubelet kubectl

## 配置
kubeadm version 查看版本
sudo systemctl enable --now kubelet 设置开机自启

3. k8s安装

1. 初始化k8s集群 master节点
1. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2. 关闭交换内存
swapoff -a

kubeadm init 
    --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers # 集群的镜像仓库
    --kubernetes-version v1.18.2   # k8s版本
    --pod-network-cidr=10.244.0.0/16  # pod的ip范围, 需要与flannel组件对应
    --service-cidr=10.96.0.0/12 # service的ip范围
以上步骤成功之后,末尾会打印Worker节点join命令,worker节点加入时使用
可能的报错处理
## 错误信息1:
nodeRegistration.name: Invalid value: "vm_0_2_centos": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
错误的原因是主机hostname不符合k8s的命名规范
解决方式为更改主机hostname名称: 
    hostnamectl set-hostname k8s-master

## 错误信息2:
 [ERROR Swap]: running with swap on is not supported, please disable swap
解决方式: 关闭swap内存交换 swapoff -a

## 错误信息3:
[ERROR ImagePull]: fail to pull xxx
1. 首先查询自己配置的image-repository 是否正确
2. 查看自己的docker证书是否过期
  docker pull xxx
3. 如果证书过期, 更换证书的方式为:
vim /etc/docker/certs.d/ca.crt
替换原有的证书内容

## 错误信息4:
错误关键信息总结:
Kubernetes version: v1.21.3,依赖/coredns/coredns:v1.8.0,registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:v1.8.0 不存在。
解决方案:
本地执行以下命令:
docker pull coredns/coredns:1.8.0
docker tag coredns/coredns:1.8.0 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.8.0 
## 错误信息5:
- [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.
- 原因:
docker的cgroup驱动程序默认设置为system。默认情况下Kubernetes cgroup为systemd,我们需要更改Docker cgroup驱动,
- 解决办法:
1. kubeadm reset
2. vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]   ## 新增此配置
}
3. systemctl daemon-reload
4. systemctl restart docker
5. 重新初始化集群
## 错误信息6:
- 管理节点服务器重启后, docker无法启动api-server等容器
- 原因:
    通过systemctl status kubelet 查看发现报错: kubelet cgroup driver: “cgroupfs” is different from docker cgroup driver: “systemd”
    分析为: kubelet 与 docker 的 cgroup 不同导致的
- 解决办法:
1. 通过查询, 发现推荐使用的 cgroup为 systemd
2. 可以通过 `错误信息4` 查看如何修改 docker 的cgroup
3. 修改 kubelet的 cgroup
    - vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
      在KUBELET_KUBECONFIG_ARGS 后面追加 --cgroup-driver=systemd
    - vim /var/lib/kubelet/kubeadm-flags.env
      在 KUBELET_KUBEADM_ARGS 后面追加 --cgroup-driver=systemd
4. 重启kubelet:
    - systemctl daemon-reload
    - systemctl restart kubelet
2. 配置 .kube

执行成功上述命令后使用 kubectl get node 会报错,需执行以下命令

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

执行完上述操作后 kubectl get node 命令status显示 NotReady, 需安装flannel组件

# 从github中下载 kube-flannel.yaml
https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
kubectl apply -f 文件地址
ps:  需要下载的是 kube-flannel.yaml文件, 下载其它文件可能会报错
可能的报错处理
# 错误1:
`flannel状态为Init:ImagePullBackOff`  
原因: 查看kube-flannel.yml文件时发现quay.io/coreos/flannel:v0.13.1-amd64, 这是因为quay.io网站目前国内无法访问
解决办法: 
去https://github.com/coreos/flannel/releases官方仓库下载镜像
导入本地docker仓库
docker load < flanneld-v0.13.0-amd64.docker 
---
# 错误2:
 `coredns pod显示:error connect: no route to host`
解决办法操作:
systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker
---
# 错误3:主节点重启后报错
`The connection to the server 192.168.37.201:6443 was refused - did you specify the right host or port?`
解决方法:
systemctl daemon-reload
systemctl restart kubelet
---
# 错误4:
`pod内的服务访问不了外网[包括prometheus的target连接失败]`
解决方法:
具体问题的原因还未找到, 初步的解决方法为:
1、 清理iptables : iptables -F && iptables -t nat -F
2、 重启集群内所有的svc:   kubectl get svc/'svc-name' -o yaml | kubectl replace -f - --force
3、此时访问不了外网的问题就可以解决

4. 重置集群

1. 重置

kubeadm reset

2. 删除残留配置
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip linl delete flannel.1
systemctl start docker  
清理iptables

iptable -F && iptables -t nat -F

4. helm安装

helm 是 k8s的包管理工具, 能快速查找、下载和安装软件包

# 1. 从github下载helm
https://github.com/helm/helm/releases/tag/v3.4.1
选择 binaries 文件下载
2. 将 helm 解压移动到 /usr/bin
tar zxvf helm-v3.4.1-linux-amd64.tar.gz
cp linux-amd64/helm /usr/bin/
3. 验证
helm help
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容