《docker+k8s教程》

按照此教程安装docker https://blog.csdn.net/u010606397/article/details/89816295

注意:docker-base必须已经安装好docker、修改了docker镜像仓库、关闭防火墙

配置一台k8s基础虚拟机模板

复制一个k8s-base虚拟机出来。复制——>为所有网卡生成MAC地址——>完全复制。步骤图如下:

点击虚拟机设置,修改内存、cpu数量、网络

修改内存为2048 MB

k8s要求节点的cpu至少为2个

为了能让3个节点能相互通信,需要把网络设置为桥接。只设置一张网卡即可,不要设置多张网卡

启动虚拟机

由于kubernetes集群节点的名称不能相同,所以我们必须修centos的hostname

vim /etc/hostname

改为 k8sbase 保存退出

查看网卡信息

ip addr

我虚拟机的网卡名字为enp0s3,你们的可能不是这个名字

修改网卡配置

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3  #后面enp0s3是网卡名字,你们的可能不是这个名字

我们在window主机上输入  ipconfig /all  查看宿主机网络配置

先注释掉#BOOTPROTO=dhcp、#ONBOOT=no。然后填入

#使用静态地址
BOOTPROTO=static
#开机启动网卡
ONBOOT=yes
#最后3位数跟宿主机不同即可
IPADDR=192.168.1.200
#子网掩码 
NETMASK=255.255.255.0
#使用宿主机网关
GATEWAY=192.168.1.1
#使用宿主机dns 
DNS1=116.116.116.116

禁用SELINUX

vim /etc/selinux/config

SELINUX=disabled

关闭swap分区

vi /etc/fstab

注释掉    #/dev/mapper/centos-swap swap XXXXX

关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

使用阿里云kubernetes镜像源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

查看仓库是否设置成功  yum repolist

关闭k8sbase

shutdown -h now

新建k8s01虚拟机

配置好k8s-base后,我们用这个虚拟机作为基础,复制出3台虚拟机。

首先复制出k8s01虚拟机,步骤跟上面复制出k8s-base虚拟机是一样的,主要步骤如下:

复制——>为所有网卡生成MAC地址——>完全复制

修改hostname为k8s01 

vim /etc/hostname

修改ip  IPADDR=192.168.XX.XX     #也可以是与宿主机在同一网段的其他ip

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

重启虚拟机  

reboot -h now

由于改了host,可能要删除xshell中的连接,关闭xshell,然后新建连接才能连接上虚拟机。查看可安装的程序包

yum list | grep  kubeadm

安装kubelet-1.14.1-0、kubectl-1.14.1-0、kubeadm-1.14.1-0

yum install -y kubelet-1.14.0-0 kubernetes-cni-0.5.1
yum install -y kubeadm-1.14.0-0 kubectl-1.14.0-0

kubeadm version

启动、开机启动kubelet
systemctl start kubelet
systemctl enable kubelet

kubernetes所需组件在k8s.gcr.io组织下,但大陆是无法下载k8s.gcr.io组织下的镜像滴。

解决办法是从其他组织下载kubernetes组件的镜像,然后通过docker tag在本地生成k8s.gcr.io/XXX镜像。这样虚拟机本地就有k8s.gcr.io组织的镜像了。

拉取kubernetes主节点所需组件镜像,版本也是1.14.1

docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.14.1
docker pull mirrorgooglecontainers/etcd-amd64:3.3.10
docker pull mirrorgooglecontainers/pause-amd64:3.1
docker pull coredns/coredns:1.3.1

通过docker tag 在本地生成k8s.gcr.io组织的镜像

docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1 k8s.gcr.io/kube-apiserver:v1.14.1
docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1 k8s.gcr.io/kube-scheduler:v1.14.1
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1
docker tag mirrorgooglecontainers/etcd-amd64:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

# 有时候会报iptables转发问题,iptables配置
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

使配置生效

sudo sysctl -p

初始化主节点,10.244.0.0/16是flannel网络插件的网段

kubeadm init --apiserver-advertise-address=主机ip --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16

如图所示代表初始化主节点成功。拷贝kubeadm join 这段命令出来,加入新节点时需要用到

kubeadm join 192.168.1.201:6443 --token m8oXXXXXvp5c \
    --discovery-token-ca-cert-hash sha256:XXXX

###########################################################

#若在init的过程中卡住,另开一个终端,运行 如下命令查看日志
journalctl -f -u kubelet.service
#再次执行kubeadm init 之前要先重置节点状态,恢复到kubeadm init之前的状态
kubeadm reset
# token有效期是24小时,24小时候要新加入节点,可重新创建token
kubeadm token create
# 查看token
kubeadm token list

####################################################################

根据提示执行这两句命令

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

安装flannel网路插件。

https://raw.githubusercontent.com可能会被墙,可在本地主机上下载kube-flannel.yml,再拷贝到虚拟机中。

curl -O https://raw.githubusercontent.com/coreos/flannel/v0.12.0/Documentation/kube-flannel.yml
kubectl apply -f  kube-flannel.yml

查看主节点运行情况,等一会儿,网络插件就起来了。如果没配KUBECONFIG环境变量,执行此命令会报错
kubectl get pods -n kube-system -o wide

 

主节点就安装成功了。

新建k8s02虚拟机

同样通过k8s-base复制出k8s02虚拟机。

复制——>为所有网卡生成MAC地址——>完全复制

修改hostname为k8s02

vim /etc/hostname

修改ip  IPADDR=192.168.XXX  #也可以是与宿主机在同一网段的其他ip

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

# 有时候会报iptables转发问题,iptables配置
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

使配置生效

sudo sysctl -p

重启虚拟机 

reboot -h now

安装kubelet-1.14.1-0、kubectl-1.14.1-0、kubeadm-1.14.1-0

yum install -y kubelet-1.14.0-0 kubernetes-cni-0.5.1
yum install -y kubeadm-1.14.0-0 kubectl-1.14.0-0

kubeadm version

启动、开机启动kubelet
systemctl start kubelet
systemctl enable kubelet

从节点所需的镜像比较少

docker pull mirrorgooglecontainers/pause-amd64:3.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.14.1

docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.14.1 k8s.gcr.io/kube-proxy:v1.14.1

执行在初始化主节点时得到的命令,将节点加入到集群中

kubeadm join 初始化k8s-01时的命令:6443 --token m8oXXXXXvp5c \
    --discovery-token-ca-cert-hash sha256:XXXX

在主节点执行  kubectl get nodes  即可查看集群中的所有节点

主节点忘记改hostname了,还是k8sbase,不管了,就酱。

##############################################################

# 删除节点需要执行以下两条命令

#在主节点上执行
kubectl delete node k8s03
# k8s03节点上重置状态
kubeadm reset

##############################################################

k8s03节点的操作跟k8s02是一样的,记得要改hostname、ip

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐