安装包下载
k8s 1.14.1所需下载 验证码:nnpa
安装环境
主机地址 | 角色 | 版本 |
---|---|---|
192.168.6.136 | docker repos | CentOS Linux release 7.5.1804 (Core) |
192.168.6.134 | k8s master | CentOS Linux release 7.5.1804 (Core) |
192.168.6.132 | k8s worker1 | CentOS Linux release 7.5.1804 (Core) |
192.168.6.135 | k8s worker2 | CentOS Linux release 7.5.1804 (Core) |
建立test.io:5000 docker
私有仓库(192.168.6.136
主机)
- 安装
docker
cd docker_install/
tar -zxvf docker-ce-18.09.tar.gz
cd docker/
yum localinstall -y *.rpm
- 编辑
docker
配置文件daemon.json
{
"insecure-registries":["test.io:5000"]
}
- 将配置文件放入
/ect/docker/
下面,并启动docker
systemctl start docker && systemctl enable docker
- 导入
docker-registry.tar
包
cd ../
docker load < docker-registry.tar
- 启动
registry docker
容器
docker run -d -p 5000:5000 --restart=always --name test-registry -v /data/registry:/var/lib/registry registry:2
- 将
test.io
域名解析至192.168.6.136
。这里可以通过在四台主机修改/etc/host
文件加入192.168.6.136 test.io
来实现
导入k8s 1.14.1
所需要的全部镜像
- 先将镜像导入至本地
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz
- 再将本地镜像导入到registry中,执行
import-registry.sh
docker tag k8s.gcr.io/kube-scheduler:v1.14.1 test.io:5000/k8s.gcr.io/kube-scheduler:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-scheduler:v1.14.1
docker tag k8s.gcr.io/kube-proxy:v1.14.1 test.io:5000/k8s.gcr.io/kube-proxy:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-proxy:v1.14.1
docker tag k8s.gcr.io/pause:3.1 test.io:5000/k8s.gcr.io/pause:3.1
docker push test.io:5000/k8s.gcr.io/pause:3.1
docker tag k8s.gcr.io/etcd:3.3.10 test.io:5000/k8s.gcr.io/etcd:3.3.10
docker push test.io:5000/k8s.gcr.io/etcd:3.3.10
docker tag k8s.gcr.io/coredns:1.3.1 test.io:5000/k8s.gcr.io/coredns:1.3.1
docker push test.io:5000/k8s.gcr.io/coredns:1.3.1
docker tag k8s.gcr.io/kube-apiserver:v1.14.1 test.io:5000/k8s.gcr.io/kube-apiserver:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-apiserver:v1.14.1
docker tag k8s.gcr.io/kube-controller-manager:v1.14.1 test.io:5000/k8s.gcr.io/kube-controller-manager:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag quay.io/coreos/flannel:v0.11.0-amd64 test.io:5000/quay.io/coreos/flannel:v0.11.0-amd64
docker push test.io:5000/quay.io/coreos/flannel:v0.11.0-amd64
docker tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 test.io:5000/k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker push test.io:5000/k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
初始化k8s
三台主机环境
安装
docker
,注意配置文件/etc/docker/daemon.json
与192.168.6.136
保持一致,即必须包含"insecure-registries":["test.io:5000"]
的配置在3台主机上使用
docker info | grep cgroupfs
查看Cgroup Driver
是否为cgroupfs
,如果不是,请在daemon.json
配置文件中加入"exec-opts": ["native.cgroupdriver=cgroupfs"]
,并重启dockersystemctl daemon-reload && systemctl restart docker
初始化主机
k8s
环境,执行k8s-init.sh
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
swapoff -a
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
三台主机注释掉
/etc/fstab
含有swap
的一行三台主机安装
kubeadm
,kubectl
,kubelet
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm
利用kubeadm
安装主节点
- 执行主节点初始化安装命令
kubeadm init --image-repository=test.io:5000/k8s.gcr.io --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16
- 在主节点创建常规用户权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 记录
kubeadm join
命令并前往各个worker
节点执行,此命令非常重要,不能丢失
kubeadm join 192.168.6.134:6443 --token q2bf9l.0fqh0dxw788zs9q7 \
--discovery-token-ca-cert-hash sha256:6e8eeb7b9f505bedbf6f1b09f0d8e289132ac6f975be35aa24515974e0185e0f
- 在主节点执行
kubectl get nodes -o wide
,确认节点是否连接正常,这里会发现状态为NotReady
,这是因为节点直接未安装网络,属于正常情况
部署flannel
网络
- 在主节点配置
KUBECONFIG
变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
echo $KUBECONFIG
- 在主节点执行
kubectl create -f kube-flannel.yml
,然后执行kubectl get pods -n kube-system
,等待pod
全部处于Running
状态,最后执行kubectl get nodes -o wide
,如果状态变成Ready
则大功告成。