Vmware虚拟机Ubuntu20.04安装配置——k8s 1.23部署
镜像:
官网服务器版本镜像:ubuntu-20.04.4-live-server-amd64
创建虚拟时选择开启WMX才可以和WSL共存
安装:
系统安装时:
- 配置40G空间
- 选择获取github的公钥自动开启ssh连接
- 选择安装Docker 坑,以这种方式安装的docker需要用snap管理,采用手动安装
- 不要选择更新,跳过,默认源比较慢
配置:
开机,直接ssh连接
1. 修改源
sudo vim /etc/apt/sources.list
# vim中输入dG删除所有
# 中科大源:
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# 更新源:
sudo apt update
sudo apt upgrade
2. 固定网络ip
sudo vim /etc/netplan/00-installer-config.yaml
network: ethernets: ens33: addresses: - 192.168.207.11/24 gateway4: 192.168.207.2 nameservers: addresses: - 223.5.5.5 search: - 223.5.5.5 version: 2
sudo netplan apply
然后ping下百度和外网看一下同不同。
3. 关闭防火墙
# 关闭防火墙
ufw disable
4. 关闭虚拟交换分区
sudo vim /etc/fstab # 注释掉最后一行/swap.img开头的
5. 修改root密码
sudo passwd root
k8s部署
在VMware创建四台虚拟机部署k8s网络如下:
k8s-master: 192.168.207.11
k8s-node-1:192.168.207.12
k8s-node-2:192.168.207.13
k8s-node-2:192.168.207.14
k8s-master机:
1. 配置host
cat >> /etc/hosts << EOF 192.168.207.11 k8s-master 192.168.207.12 k8s-node-1 192.168.207.13 k8s-node-2 192.168.207.14 k8s-node-3 EOF
2. 安装Docker
安装:
# 安装
apt-get install -y docker.io
# 查看docker状态
systemctl status docker
# 如果没有启动,就手动启动
# systemctl start docker
# 设置开机自启
systemctl enable docker
为Docker配置镜像加速:
修改/etc/docker/daemon.json
文件,xxxxxxxx改成你自己的加速器地址:
{
"registry-mirrors": [
"https://xxxxxxxx.mirror.aliyuncs.com"
]
}
之后重新启动服务:
# 重启
systemctl daemon-reload
systemctl restart docker
# 检查加速器是否生效
docker info
如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
https://xxxxxxxxx.mirror.aliyuncs.com/
将当前用户加入docker用户组中:
# 添加docker用户组(应该已经存在了)
sudo groupadd docker
# 将当前用户加入到docker用户组中
sudo gpasswd -a $USER docker
# 测试docker命令是否可以正常使用
docker ps
以上配置在重启以后生效(newgrp docker
命令只能让你登入docker用户组,但是新建的terminal仍然是没有docker用户组权限的)。
3. 将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
4. 安装kubelet=1.23.14-00 kubeadm=1.23.14-00 kubectl=1.23.14-00(注意版本号)
apt-get update && apt-get install -y apt-transport-https curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat >> /etc/apt/sources.list.d/kubernetes.list << EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet=1.23.14-00 kubeadm=1.23.14-00 kubectl=1.23.14-00
5. 部署master节点
在正式开始之前,我们要先做一件事——修改主机名,不然后面显示信息可能会有点困扰,具体做法如下:
先修改/etc/hostname
文件,改成k8s-master:
然后修改一下/etc/hosts
文件:
重启机器即可生效。worker节点的名字在安装的时候就改好了,如果你没有修改的话,可以按照上述步骤进行修改。
言归正传,新建一个kubeadm.yaml
文件(因为书上是使用yaml文件初始化的,当然你也可以用命令行参数进行初始化,这里的yaml文件我已经修改过了),内容如下:
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.207.11
bindPort: 6443
nodeRegistration:
kubeletExtraArgs:
cgroup-driver: "systemd"
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: 1.23.0
clusterName: "example-cluster"
controllerManager:
extraArgs:
horizontal-pod-autoscaler-sync-period: "10s"
node-monitor-grace-period: "10s"
apiServer:
extraArgs:
runtime-config: "api/all=true"
执行初始化命令:
kubeadm init --config kubeadm.yaml
报错:
[kubelet-check] Initial timeout of 40s passed.
[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 127.0.0.1:10248: connect: connection refused.
解决方案:
修改我们的docker配置文件/etc/docker/daemon.json
,添加一行:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://xxxxxxxx.mirror.aliyuncs.com"
]
}
之后执行如下命令:
# 重启docker
systemctl daemon-reload
systemctl restart docker
# kubeadm重置
kubeadm reset
rm -rf $HOME/.kube/config
# 重新初始化
kubeadm init --config kubeadm.yaml
这样就初始化成功啦:
kubeadm join 192.168.207.11:6443 --token pjg2em.g41f9ocxofnd0t0s \
--discovery-token-ca-cert-hash sha256:6b50d8ac3d524279bd1f77358dc107b361febf25ad5ad2513fd964a856a8ba44
参考:
https://zhuanlan.zhihu.com/p/468132335
https://blog.csdn.net/zhuoyuedelan/article/details/122274685
重启kubectl命令错误解决:https://blog.csdn.net/CEVERY/article/details/108753379