云原生Kubernetes: Ubuntu 安装 K8S 1.23版本(单Master架构) 及故障恢复

目录

一、实验

1.环境

[2.安装 Ubuntu](#2.安装 Ubuntu)

3.连接Ubuntu

4.master节点安装docker

5.node节点安装docker

6.master节点安装K8S

7.添加K8S工作节点

8.安装网络插件calico

9.故障

10.故障恢复

11.测试k8s网络和coredns

二、问题

1.Ubuntu如何修改镜像源

2.Ubuntu和Windows之间如何实现复制粘贴

3.Ubuntu如何开启openssh-server

4.UbuntuSSH连接失败

[5.Ubuntu ping不通](#5.Ubuntu ping不通)

6.更新apt源和安装基础软件包报错

[7. master更新镜像源报错](#7. master更新镜像源报错)

8.Ubuntu如何安装rz命令


一、实验

1.环境

(1)主机

表1 主机

|---------|--------------|--------|-----------------|----|
| 主机 | 架构 | 版本 | IP | 备注 |
| master1 | K8S master节点 | 1.23.1 | 192.168.204.102 | |
| node1 | K8S node节点 | 1.23.1 | 192.168.204.104 | |

2.安装 Ubuntu

(1) 选择版本

bash 复制代码
ubuntu-20.04.3-desktop-amd64

(2)系统检查

(3)等待

(4)选择语言

(5)键盘布局

(6)更新和其他软件

(7)时区

(8)磁盘

(9)用户

(10)安装

(11)重启

3.连接Ubuntu

(1)设置密码

bash 复制代码
1)先用安装时候的用户登录进入系统

2)输入:sudo passwd  按回车

3)输入新密码,重复输入密码,最后提示passwd:password updated sucessfully
此时已完成root密码的设置

4)输入:su root
切换用户到root试试.

(2)网络

bash 复制代码
ip a

(3)修改机器主机名

master1

bash 复制代码
hostnamectl set-hostname master1 && bash

node1

bash 复制代码
hostnamectl set-hostname node1 && bash

(4)安装vim

bash 复制代码
sudo apt-get install vim

(5)安装网络工具

bash 复制代码
apt install net-tools

(6)修改网卡

bash 复制代码
sudo vim /etc/network/interfaces
​
auto ens33
iface ens33 inet static
address 192.168.204.102
netmask 255.255.255.0
gateway 192.168.204.2
dns-nameserver 8.8.8.8

(7)重启

bash 复制代码
reboot

(8) 修改域名

bash 复制代码
vim /etc/hosts

(8)更新apt源和安装基础软件包

bash 复制代码
apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg2

4.master节点安装docker

(1)把下载的key添加到本地trusted数据库中

bash 复制代码
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

(2)设置稳定版仓库

bash 复制代码
sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

(3) 安装Docker

bash 复制代码
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

(4) 配置Docker驱动

bash 复制代码
cat <<EOF | tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

(5)开机自启

bash 复制代码
mkdir -p /etc/systemd/system/docker.service.d

systemctl daemon-reload

systemctl restart docker

systemctl enable --now docker

5.node节点安装docker

(1) 安装过程

与master节点相同,这里省略。

6.master节点安装K8S

(1)更新

bash 复制代码
 apt-get update && apt-get install -y apt-transport-https curl 

(2)镜像加速

bash 复制代码
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF

(3)安装

bash 复制代码
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00

(4)标记指定软件包为保留(held back),阻止软件自动更新

bash 复制代码
apt-mark hold kubelet kubeadm kubectl 

(5)关闭交换分区

bash 复制代码
 swapoff -a

(6)初始化K8S

bash 复制代码
kubeadm init --apiserver-advertise-address 192.168.204.102 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

(7)配置文件

bash 复制代码
 
mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

7.添加K8S工作节点

(1)更新

bash 复制代码
apt-get update && apt-get install -y apt-transport-https curl 

(2)镜像加速

bash 复制代码
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF

(3)安装

bash 复制代码
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00

(4)标记指定软件包为保留(held back),阻止软件自动更新

bash 复制代码
apt-mark hold kubelet kubeadm kubectl 

(5)关闭交换分区

bash 复制代码
 swapoff -a

(6)在master1上查看加入节点的命令

bash 复制代码
 kubeadm token create --print-join-command

(7)在node1执行命令

(8)查看

bash 复制代码
kubectl get node

8.安装网络插件calico

(1)下载配置文件

bash 复制代码
https://docs.projectcalico.org/manifests/calico.yaml

(2)修改配置文件

(3)安装

bash 复制代码
kubectl apply -f  calico.yaml

9.故障

(1)故障描述

此时磁盘大小不够崩溃

(2)查看pod状态

bash 复制代码
kubectl get pod --all-namespaces

尝试再次初始化报错ERROR

10.故障恢复

(1)重置kubeadm

bash 复制代码
kubeadm reset

出现删除提示

(2) 删除配置文件

(3)关闭swap 测试

bash 复制代码
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a

(4)再次重置kubeadm

bash 复制代码
kubeadm reset

(5)初始化

bash 复制代码
kubeadm init --apiserver-advertise-address 192.168.204.102 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

(6) 配置文件

bash 复制代码
 
mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

(7)在master1上查看加入节点的命令

bash 复制代码
kubeadm token create --print-join-command
kubeadm join 192.168.204.102:6443 --token d70wh5.gyvrmwa62w91hhoa --discovery-token-ca-cert-hash sha256:765a563a7ba90c23da4c375ec99dd434763ca43512e27c6ae38ce0bd67a6234d

(8)从节点加入失败

bash 复制代码
systemctl stop kubelet

systemctl stop docker

rm -rf /var/lib/cni/ /var/lib/kubelet/* /etc/cni/

ifconfig docker0 down

systemctl start docker

free -m

(9)删除文件重新加入

bash 复制代码
rm -rf /etc/kubernetes/kubelet.conf

rm -rf /etc/kubernetes/pki/ca.crt

(10)查看节点状态

bash 复制代码
kubectl get node

(11) 安装网络插件calico

bash 复制代码
kubectl apply -f  calico.yaml

(12) 观察pod变化

拉取镜像需要一定时间,查看pod状态为running则安装成功。

bash 复制代码
kubectl get pod --all-namespaces -w

kubectl get pod --all-namespaces

(13)查看集群状态

bash 复制代码
 kubectl get node

 kubectl get node -o wide

11.测试k8s网络和coredns

(1)测试

bash 复制代码
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
/ # ping www.baidu.com

/ # nslookup kubernetes.default.svc.cluster.local

/ # exit

二、问题

1.Ubuntu如何修改镜像源

(1)自动

bash 复制代码
选择 "Ubuntu软件 / 源代码 (需验证,输入密码) / 其它站点 / 选择最佳服务器 ",自动选择合适的镜像源

(2)手动

bash 复制代码
Ubuntu系统中,软件源文件地址为:/etc/apt/sources.list

1)备份原来的源,将以前的源备份一下,以防以后可以用的。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2)打开/etc/apt/sources.list文件,在前面添加如下条目,并保存。
sudo vim /etc/apt/sources.list(可将vim更换为自己熟悉的编辑器)
bash 复制代码
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse

(3)更新

更新源

bash 复制代码
sudo apt-get update 

如出现依赖问题,解决方式如下:

bash 复制代码
sudo apt-get -f install

更新软件:

bash 复制代码
sudo apt-get upgrade

2.Ubuntu和Windows之间如何实现复制粘贴

(1)命令

bash 复制代码
apt-get autoremove open-vm-tools

sudo apt-get install open-vm-tools-desktop

3.Ubuntu如何开启openssh-server

(1) 开启命令

bash 复制代码
要在Ubuntu主机开启SSH服务,需要开启openssh-server命令

(2)下载SSH服务

bash 复制代码
sudo apt-get install openssh-server 

(3)执行下句,验证下载后是否已经开启了服务

bash 复制代码
#如果只有ssh-agent表示还没启动
ps -e | grep ssh

(4)开启服务

bash 复制代码
#如果显示sshd则说明已启动成功
/etc/init.d/ssh start

4.UbuntuSSH连接失败

(1)修改配置文件

bash 复制代码
1)进入终端窗口
2)进入root权限。输入命令:sudo su,回车后输入密码即可。
3)打开ssh服务器的配置文件,输入命令:vi /etc/ssh/sshd_config
4)在弹出窗口中找到Authentication,使用vi命令修改其中PermitRootLogin后的prohibit-password为yes(如果不会使用vi命令,参考下面的注意)。

修改前

修改后

(2)重新启动

重新启动ssh服务器,输入命令

bash 复制代码
sudo /etc/init.d/ssh restart

重新使用XShell工具进行连接

5.Ubuntu ping不通

(1)修改网卡

bash 复制代码
输入命令sudo vim /etc/network/interfaces,编辑该文件。注意此处 ens33 处用自己的网卡编号替换,address和gateway也是要视自己的情况定的。

bash 复制代码
auto lo
iface lo inet loopback

auto ens33
iface ens33 inet static
address 192.168.204.102
netmask 255.255.255.0
gateway 192.168.204.2
dns-nameserver 8.8.8.8

(2)保存退出

bash 复制代码
wq 保存退出,此时ping一些自己的内网应该是可以ping通的了。要是ping www.baidu.com还是ping不通的,接下来就需要继续接着做。

(3)DNS解析

bash 复制代码
在命令行输入sudo vim /etc/systemd/resolved.conf 修改改文件:将DNS前的 # 号去掉,然后加上DNS服务器地址即可。

(4)重启网络服务

bash 复制代码
 sudo /etc/init.d/ network-manager force-reload  ==> 重新加载网路配置文件
sudo /etc/init.d/network-manager restart

(5)安装ifupdown

bash 复制代码
apt install ifupdown

(6)再次修改网卡

bash 复制代码
sudo vim /etc/network/interfaces
bash 复制代码
auto ens33
iface ens33 inet static
address 192.168.204.102
netmask 255.255.255.0
gateway 192.168.204.2
dns-nameserver 8.8.8.8

​

(7)重启

bash 复制代码
reboot

(8)重启Ubuntu

bash 复制代码
su root

(9)ping

6.更新apt源和安装基础软件包报错

(1)报错

(2)原因分析

锁定。

(3)解决方法

bash 复制代码
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update

7. master更新镜像源报错

(1)报错

(2)原因分析

没有公钥

(3)解决方法

添加公钥

bash 复制代码
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 8B57C5C2836F4BEB 

成功

8.Ubuntu如何安装rz命令

(1)安装

bash 复制代码
apt install lrzsz

相关推荐
uhakadotcom8 小时前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
沉登c11 小时前
第 3 章 事务处理
架构
阿里云云原生11 小时前
LLM 不断提升智能下限,MCP 不断提升创意上限
云原生
阿里云云原生11 小时前
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
云原生
数据智能老司机14 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机14 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
宁zz14 小时前
乌班图安装jenkins
运维·jenkins
云上艺旅15 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
c无序15 小时前
【Docker-7】Docker是什么+Docker版本+Docker架构+Docker生态
docker·容器·架构
大丈夫立于天地间15 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信