K8S集群环境搭建、扩容与缩容
服务器准备
3台虚拟机
192.168.0.108 K8S-master docker
192.168.0.105 K8S-node1 docker
192.168.0.106 K8S-node2 docker
Docker 安装
yum -y update
卸载旧版本(如果安装过旧版本的话)
sudo yum remove -y docker*
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install -y docker-ce-3:19.03.9-3.el7.x86_64 # 这是指定版本安装
docker version
K8S 安装
在每台机器执行以下操作
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
cat >> /etc/hosts << EOF
192.168.0.108 k8s-master
192.168.0.105 k8s-node1
192.168.0.106 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
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
开机启动kubelet
systemctl enable kubelet
systemctl start kubelet
在master机器执行以下操作
kubeadm init --apiserver-advertise-address=192.168.0.108 --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机器上执行初始化操作(里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)
kubeadm init --apiserver-advertise-address=192.168.0.108 --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
执行后效果如下:
在node机器执行以下操作
kubeadm join 192.168.0.108:6443 --token q5047k.vevem7q551b5v4e2 \
> --discovery-token-ca-cert-hash sha256:a4d298d09300be2e545db332f3d5b005a07578b3b263d00dc9e3094a23714c03
集群搭建好后效果如下:
应用软件在K8S部署
用K8S部署Nginx
创建一次deployment部署
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort # --port是service的虚拟ip对应的端口
查看Nginx的pod和service信息
kubectl get pod,svc -o wide
访问Nginx地址: http://任意节点的ip:图中Nginx的对外映射端口
http://192.168.0.108:30903/
扩容与缩容
小总结
kubectl create deployment #创建一个deployment来管理创建的容器
kubectl get #显示一个或多个资源,可以使用标签过滤,默认查看当前名称空间的资源
kubectl expose #将一个资源暴露为一个新的kubernetes的service资源,资源包括pod (po), service (svc), replicationcontroller (rc),deployment(deploy), replicaset (rs)
kubectl describe #显示特定资源或资源组的详细信息
kubectl scale #可以对Deployment, ReplicaSet, Replication Controller, 或者StatefulSet设置新的值,可以指定一个或多个先决条件
kubectl set #更改现有的应用程序资源
kubectl rollout #资源回滚管理