国内环境 ubuntu18 安装 k8s
# 国内环境 ubuntu18 安装 k8s
# 环境准备
准备了三台ubuntu18 虚拟机
IP | ROTE | Hostname |
---|---|---|
192.168.12.98 | master | master |
192.168.12.122 | worker | worker1 |
192.168.12.94 | worker | worker2 |
# 设置主机名
# 设置主机名
sudo hostnamectl set-hostname master
# host 添加一行
sudo vim /etc/hosts
127.0.0.1 master
1
2
3
4
5
6
2
3
4
5
6
其他节点照着改名字即可
# 关闭swap
see linux 关闭交换空间
# 关闭 SeLinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
1
2
2
# Master 额外执行下面命令
创建/etc/sysctl.d/k8s.conf文件,添加如下内容
sudo vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
1
2
3
4
2
3
4
执行命令使修改生效
sudo modprobe br_netfilter
sudo sysctl -p /etc/sysctl.d/k8s.conf
1
2
2
# 安装docker
sudo apt install docker.io -y
systemctl enable docker.service
1
2
2
# 安装 kubeadm, kubelet, kubectl
sudo apt-get update && sudo apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet=1.19.1-00 kubeadm=1.19.1-00 kubectl
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 准备镜像
这一步 可以说是最容易失败的步骤了, 简述一下原因:
- kubeadm init 时要拉取 镜像仓库k8s.gcr.io下的镜像
- 国内无法访问k8s.gcr.io
- 为了kubeadm init能够正常执行, 我们要提前先准备好要pull的k8s.gcr.io下的镜像
这里我已经准备好了k8s 1.19.1所需的镜像,只需拉下来打tag即可
# 查看需要的镜像
kubeadm config images list
# 拉取镜像
docker pull jdkhome/kube-apiserver:v1.19.1
docker pull jdkhome/kube-controller-manager:v1.19.1
docker pull jdkhome/kube-scheduler:v1.19.1
docker pull jdkhome/kube-proxy:v1.19.1
docker pull jdkhome/pause:3.2
docker pull jdkhome/etcd:3.4.13-0
docker pull jdkhome/coredns:1.7.0
# 修改镜像名称
docker tag jdkhome/kube-apiserver:v1.19.1 k8s.gcr.io/kube-apiserver:v1.19.1
docker tag jdkhome/kube-controller-manager:v1.19.1 k8s.gcr.io/kube-controller-manager:v1.19.1
docker tag jdkhome/kube-scheduler:v1.19.1 k8s.gcr.io/kube-scheduler:v1.19.1
docker tag jdkhome/kube-proxy:v1.19.1 k8s.gcr.io/kube-proxy:v1.19.1
docker tag jdkhome/pause:3.2 k8s.gcr.io/pause:3.2
docker tag jdkhome/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
docker tag jdkhome/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 初始化Master
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
1
执行完成后就完成了Kubernetes Master的部署了, 最后还打印出加入Worker加入Master的命令, 需要找个地方记下来。
sudo kubeadm join 192.168.12.98:6443 --token tearz2.rvquwsv5gd7ds8tn \
--discovery-token-ca-cert-hash sha256:dd0674653ecc31f204a8f81d0eb91a14664a005fb05a61f56532fd977f14c7a4
1
2
2
如果不小心忘记了,可以执行
kubeadm token create --print-join-command --ttl 0
1
另外, kubeadm 还会提示我们第一次使用 Kubernetes 集群所需要的配置命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
1
2
3
2
3
而需要这些配置命令的原因是: Kubernetes 集群默认需要加密方式访问。所以,这几条命令,就是将刚刚部署生成的 Kubernetes 集群的安全配置文件,保存到当前用户的.kube 目录下, kubectl 默认会使用这个目录下的授权信息访问 Kubernetes 集群。
# 部署网络插件
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
1
查看pod状态
kubectl get pods -n kube-system
1
# 部署Worker节点
准备镜像完成后, 执行前面打印的 kubeadm join 命令即可
在master 执行
kubectl get nodes
1
可以看到节点情况,舒服~。
# 参考资料
- 使用 kubeadm 安装 kubernetes v1.16.0 eastonliu
- 国内环境安装k8s chenzhenqi
Enjoy~
上次更新: 2020/12/24, 21:12:00