一、k8s集群的部署
1. 将之前swarm集群的所有配置清理
docker stack rm portainer
docker volume prune #清理卷
docker network prune #清理网络
docker rm -f 进程id #清理进程
docker ps
docker ps -a
docker swarm leave #清理节点,master可以加上-f,强制退出节点
docker node rm server2 #删除节点
docker service rm 进程id #删除服务
2. 实验准备
三台虚拟机server1、server2、server3,每个结点均安装docker环境
server1——管理结点(172.25.5.1)
server2和server3——从结点(172.25.5.2和172.25.5.3)
3. 对三个结点进行操作
(1)关闭swap,禁止swap分区开机自启
swapoff -a #关闭swap
vim /etc/fstab
#/dev/mapper/rhel-swap swap swap defaults 0 0
(2)三个结点同时安装kubernet服务,导入相关镜像
#安装以下软件
cri-tools-1.13.0-0.x86_64.rpm
kubelet-1.15.0-0.x86_64.rpm
kubeadm-1.15.0-0.x86_64.rpm
kubernetes-cni-0.7.5-0.x86_64.rpm
kubectl-1.15.0-0.x86_64.rpm
#导入以下镜像
coredns.tar kube-apiserver.tar kube-proxy.tar pause.tar
etcd.tar kube-controller-manager.tar kube-scheduler.tar
for i in *.tar; do docker load -i $i ; done #循环导入镜像
4. server1中操作
编写k8s配置文件,并将该文件拷贝到server2和server3中
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
sysctl --system #使设置生效
scp /etc/sysctl.d/k8s.conf server2: #拷贝配置文件到各个结点
scp /etc/sysctl.d/k8s.conf server3:
在三个结点同时开启kubernet服务
systemctl enable kubelet
systemctl start kubelet
5. server1作为管理结点,进行init初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=172.25.5.1
根据初始化后的提示,将server2和server3添加到集群中(server2和server3中操作)
kubeadm join 172.25.5.1:6443 --token 4othmd.gi899esjgei42do7 --discovery-token-ca-cert-hash sha256:1e8cb731b0005c306a9d9bafa32efb1fc2462f7060e468e825a5b793c693437f
6. server1中根据初始化提示,创建普通用户及管理文件
useradd kubeadm
vim /etc/sudoers #下放权力
kubeadm ALL=(ALL) NOPASSWD:ALL
su - kubeadm
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
systemctl restart kubelet
kubectl get nodes #server1中查看集群节点是否添加成功,添加成功的状态均为notready
7. 下载驱动镜像,用来开启各结点
flannel.tar kube-flannel.yml
#将kube-flannel.yml文件移动到/home/kubeadm文件中
#在所有节点导入驱动镜像flannel.tar
docker load -i flannel.tar
scp flannel.tar server2:
scp flannel.tar server3:
## 切换到kubeadm用户,通过yml文件开启服务
kubectl apply -f kube-flannel.yml #通过该文件打开应用服务
8. 查看结点的状态,设置命令补全功能
kubectl get nodes #status状态均变为ready
kubectl get pods --all-namespaces
echo "source <(kubectl completion bash)" >> .bashrc #用户配置命令补全功能
#退出在登录使设置生效
二、k8s图形化管理
实验准备:kubernetes-dashboard.tar kubernetes-dashboard.yaml
1. 导入图形化界面管理镜像
docker load -i kubernetes-dashboard.tar
su - kubeadm
kubectl get deployments. -n kube-system
kubectl get pods -n kube-system
2. 通过dashboard文件创建服务,修改服务的类型
kubectl create -f kubernetes-dashboard.yaml
kubectl edit services kubernetes-dashboard -n kube-system
Type:NodePort
kubectl describe svc kubernetes-dashboard -n kube-system #查看服务具体信息
3. 编辑dashboard-admin.yaml文件,创建用户
vim dashboard-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
4. 应用文件中的设置,获取用户密码
kubectl create -f dashboard-admin.yaml
kubectl apply -f dashboard-admin.yaml
kubectl get secrets -n kube-system | grep admin #过滤admin用户
kubectl describe secrets admin-user-token-2fwbd -n kube-system #查看令牌环密码
5. 登录图形界面
http://172.25.5.1:30763