K8S官网文档:https://kubernetes.io/zh/docs/home/
K8S 是Kubernetes的全称,用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统,K8S 是 负责自动化运维管理多个 Docker 程序的集群。
搭建K8S集群,准备三台4核8G的虚拟机,操作系统选择用centos 7以上版本,先在三台机器上装好docker。
在三台机器上都执行如下命令操作:
systemctl stop firewalld
systemctl disable firewalld
sed ‐i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭
setenforce 0 # 临时关闭
swapoff ‐a # 临时关闭
vim /etc/fstab # 永久关闭
#注释掉swap这行
# /dev/mapper/centos‐swap swap swap defaults 0 0
systemctl reboot #重启生效
free ‐m #查看下swap交换区是否都为0,如果都为0则swap关闭成功
hostnamectl set‐hostname
第一台:k8s‐master
第二台:k8s‐node1
第三台:k8s‐node2
cat >> /etc/hosts << EOF
192.168.160.129 k8s‐master
192.168.160.130 k8s‐node1
192.168.160.131 k8s‐node2
EOF
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge‐nf‐call‐ip6tables = 1
net.bridge.bridge‐nf‐call‐iptables = 1
EOF
sysctl ‐‐system # 生效
yum install ntpdate ‐y
ntpdate time.windows.com
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes‐el7‐x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum‐key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm‐package‐key.gpg
EOF
yum remove ‐y kubelet kubeadm kubectl
yum list kubelet ‐‐showduplicates | sort ‐r
yum install ‐y kubelet‐1.18.0 kubeadm‐1.18.0 kubectl‐1.18.0
systemctl enable kubelet
systemctl start kubelet
在k8s-master机器上执行初始化操作(里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)
kubeadm init ‐‐apiserver‐advertise‐address=192.168.65.160 ‐‐image‐repository registry.aliyuncs.com/google_containers ‐‐kubernetes‐version v1.18.0 ‐‐service‐cidr=10.96.0.0/12 ‐‐pod‐network‐cidr=10.244.0.0/16
执行完后结果如下图:
在k8s-master机器上执行如下命令:
#配置使用 kubectl 命令工具(类似docker这个命令),执行上图第二个红框里的命令
mkdir ‐p $HOME/.kube
sudo cp ‐i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id ‐u):$(id ‐g) $HOME/.kube/config
#查看kubectl是否能正常使用
kubectl get nodes
#安装 Pod 网络插件
kubectl apply ‐f https://docs.projectcalico.org/manifests/calico.yaml
# 如果上面这个calico网络插件安装不成功可以试下下面这个
# kubectl apply ‐f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml
在所有k8s node机器执行上图第三个红框里的命令:
# 将node节点加入进master节点的集群里,复制上图第三个红框里的命令执行
kubeadm join 192.168.65.160:6443 ‐‐token hbovty.6x82bkdlsk6dfy32 \
‐‐discovery‐token‐ca‐cert‐hash sha256:659511b431f276b2a5f47397677b1dff74838ae5eb18e24135e6dae1b8c45840
在k8s-master机器执行查看节点命令
kubectl get nodes
在k8s-master机器上执行
# 创建一次deployment部署
kubectl create deployment nginx ‐‐image=nginx
kubectl expose deployment nginx ‐‐port=80 ‐‐type=NodePort
# 查看Nginx的pod和service信息
kubectl get pod,svc ‐o wide
访问Nginx地址: http://任意节点的ip:图中Nginx的对外映射端口,http://192.168.65.160:30433
补充:如果node节点添加进集群失败,可以删除节点重新添加。
要删除 k8snode1这个节点,首先在 master 节点上依次执行以下两个命令:
kubectl drain k8s‐node1 ‐‐delete‐local‐data ‐‐force ‐‐ignore‐daemonsets
kubectl delete node k8s‐node1
执行后通过 kubectl get node 命令可以看到 k8snode1已被成功删除,接着在 k8snode1这个 Node 节点上执行如下命令,这样该节点即完全从 k8s 集群中脱离开来,之后就可以重新执行命令添加到集群。
kubeadm reset
提示:以上就是今天要讲的内容,本文仅仅简单介绍了Kubernetes快速搭建,以及用K8S部署Nginx。