Ubuntu 虚拟机配置 Kubernetes 集群(含实际操作和附录flannel.yml)

一、环境说明
1、安装两台ubuntu 18.04的虚拟机,网络为桥接模式;
  1.1、K8S最低配置至少是2个CPU,2GB内存
  1.2、K8S要求网卡MAC地址【ifconfig可查询】和机器产品码保证唯一【获取机器唯一码:cat /sys/class/dmi/id/product_uuid】
2、除有说明外,都在 root 用户下进行操作(虽然命令中有 sudo ==)
3、这里实施为:
   k8s-master     192.168.89.133       9C004D56-F7E3-8C5F-1589-B51CFEF1DBED
   k8s-worker     192.168.89.134       EB884D56-98B2-810D-9C2C-FCE9E75394AD
# 对于kubernetes v1.18.0的话,需要操作iptables,原文内容如下【操作的时k8s-master】
# 将桥接的IPv4流量传递到iptables的链
Letting iptables see bridged traffic
As a requirement for your Linux Node’s iptables to correctly see bridged traffic, you should ensure net.bridge.bridge-nf-call-iptables is set to 1 in your sysctl config, e.g.
 
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
 
# 具体操作如下:
root@k8s-master:~# vim /etc/sysctl.d/k8s.conf
# 输入以下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
 
root@k8s-master:~# sysctl --system
* Applying /etc/sysctl.d/10-console-messages.conf ...
kernel.printk = 4 4 1 7
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
kernel.kptr_restrict = 1
* Applying /etc/sysctl.d/10-link-restrictions.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/10-lxd-inotify.conf ...
fs.inotify.max_user_instances = 1024
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
kernel.sysrq = 176
* Applying /etc/sysctl.d/10-network-security.conf ...
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
* Applying /etc/sysctl.d/10-ptrace.conf ...
kernel.yama.ptrace_scope = 1
* Applying /etc/sysctl.d/10-zeropage.conf ...
vm.mmap_min_addr = 65536
* Applying /usr/lib/sysctl.d/50-default.conf ...
net.ipv4.conf.all.promote_secondaries = 1
net.core.default_qdisc = fq_codel
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.d/k8s.conf ...
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
* Applying /etc/sysctl.conf ...

 

二、安装Docker
master和worker安装Docker操作步骤如下:
apt update
apt remove docker docker-engine docker.io
apt install docker.io -y
systemctl start docker
systemctl enable docker
docker --version
 
配置一下 Docker 镜像加速,并将 Docker cgroup 驱动程序从"cgroupfs"改到"systemd"
vim /etc/docker/daemon.json
输入以下内容:
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]      
}
 
systemctl daemon-reload
systemctl restart docker
 
# 将当前登录用户添加至docker组,便于拉取镜像操作【需要退出root用户】
sudo usermod -a -G docker $USER
# 执行成功后,退出当前用户之后,再重新登录就会完全生效
k8s-master安装Docker操作步骤如下【同理:k8s-worker操作】:
root@k8s-master:~# apt update
root@k8s-master:~# apt remove docker docker-engine docker.io
root@k8s-master:~# apt install docker.io -y
root@k8s-master:~# systemctl start docker
root@k8s-master:~# systemctl enable docker
root@k8s-master:~# docker --version
Docker version 19.03.6, build 369ce74a3c
root@k8s-master:~# vim /etc/docker/daemon.json
root@k8s-master:~# systemctl daemon-reload
root@k8s-master:~# systemctl restart docker
root@k8s-master:~# exit
master@k8s-master:~$ sudo usermod -a -G docker $USER
[sudo] password for master:
master@k8s-master:~$ logout
 
三、安装Kubernetes
apt-get update && apt-get install -y apt-transport-https curl
 
# 获取kubernetes的apt keys【国内用阿里云镜像链接,国外是google镜像链接】
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 国外链接
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
 
# 编辑kubernetes.list,写入deb内容:
vim /etc/apt/sources.list.d/kubernetes.list
国内写入的内容:deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
  https://mirrors.aliyun.com/kubernetes/apt,这里面能看到kubeadm、kubelet、kubectl的版本号】
国外写入的内容:deb https://apt.kubernetes.io/ kubernetes-xenial main
 
apt-get update
apt install software-properties-common
 
# 关闭防火墙和swap
ufw disable
ufw status
# 临时关闭swap
swapoff -a
# 永久关闭swap,编辑下面文件,将swap那一行注释掉即可或者执行:sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
vim /etc/fstab
 
# 检测是否需要关闭selinux
# 如果这个/etc/selinux/config文件存在,且是enforcing,则需要进行以下调整
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
 
# 安装kubelet kubeadm kubectl
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
 
# 验证是否安装成功【kubelet现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环】
kubeadm version
k8s-master安装Docker操作步骤如下【同理:k8s-worker操作】:
root@k8s-master:~# apt-get update && apt-get install -y apt-transport-https curl
root@k8s-master:~# curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
OK
root@k8s-master:~# vim /etc/apt/sources.list.d/kubernetes.list
root@k8s-master:~# apt-get update
root@k8s-master:~# apt install software-properties-common
root@k8s-master:~# ufw disable
Firewall stopped and disabled on system startup
root@k8s-master:~# ufw status
Status: inactive
root@k8s-master:~# swapoff -a
root@k8s-master:~# vim /etc/fstab
root@k8s-master:~# apt-get install -y kubelet kubeadm kubectl
...
root@k8s-master:~# apt-mark hold kubelet kubeadm kubectl
kubelet set on hold.
kubeadm set on hold.
kubectl set on hold.
root@k8s-master:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:56:30Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}

四、配置 Master 节点

在执行 init 的时候 会向  k8s.gcr.io    获取  kube-apiserver 等 docker 镜像, 但是 k8s.gcr.io 访问不通。 
所以,我们要从拉取 别人的镜像, 然后改名, 再执行 kubeadm init  .  
1、因为国内无法访问k8s.gcr.io,因此需要把相应包的docker从docker hub拉取下来,再改tag 【如果能访问 k8s.gcr.io则跳过此步骤 <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值