cat >> /etc/hosts << EOF 192.168.116.57 k8s-master 192.168.116.58 k8s-worker01 192.168.116.59 k8s-worker02 EOF禁用SELinux
# 临时 sudo setenforce 0 # 永久 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config禁用Swap
# 临时关闭 swapoff -a # 永久关闭 sed -ri 's/.*swap.*/#&/' /etc/fstab
###允许 iptables 检查桥接流量
cat <安装kubeadm kubectl kubelet 注意 所有节点都需要安装 docker kubectl kubelet kubeadm
在这里,我选择使用kubeadm来安装k8s集群
安装运行时
官方文档我选择使用docker,原因是使用惯了 ^ _ ^
已经写过docker安装了,不在赘述,需要的参考下面这篇文章。
docker 安装
补充一点 修改一下cgroupcat <安装kubeadm kubelet kubectl # 添加k8s源 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 # 安装kubelet kubeadm kubectl sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet # systemctl enable kubelet + systemctl start kubelet 出现错误看这里
网络插件看这里
注意:安装部署节点过程中,很有可以因为防火墙的原因,导致端口不通,所以为了方便测试安装,可以考虑关掉防火墙。
#初始化master 节点 只有master节点需要执行这个命令 kubeadm init #漫长的等待 init完成后会有提示 跟着提示操作 export KUBECONFIG=/etc/kubernetes/admin.conf # 这样只是临时的 关闭session后再打开就不可以了 # 持久化 cat >> ~/.bash_profile <Ready # 查看 加入master节点的token kubeadm token create --print-join-command 接下来的操作是在worker节点
安装docker kubeadm kubectl kubelet 不在赘述
# worker节点加入到master节点 kubeadm join 192.168.116.57:6443 --token xxxx --discovery-token-ca-cert-hash sha256:xxx修改worker节点的角色# 修改角色 master执行 kubectl label node <节点名称> node-role.kubernetes.io/worker=worker安装dashboard#安装dashboard curl https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml -O kubectl apply -y recommended.yaml访问安装dashboard官方文档
代理方式kubectl proxy # 访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/NodePort编辑 kubernetes-dashboard service
kubectl -n kubernetes-dashboard edit service kubernetes-dashboard修改IP类型, type:ClusterIP ==> type: NodePort 然后保存退出
apiVersion: v1 ... name: kubernetes-dashboard namespace: kubernetes-dashboard resourceVersion: "343478" selfLink: /api/v1/namespaces/kubernetes-dashboard/services/kubernetes-dashboard uid: 8e48f478-993d-11e7-87e0-901b0e532516 spec: clusterIP: 10.100.124.90 externalTrafficPolicy: Cluster ports: - port: 443 protocol: TCP targetPort: 8443 selector: k8s-app: kubernetes-dashboard sessionAffinity: None type: ClusterIP # 修改这里 ClusterIP ==> NodePort status: loadBalancer: {}获取服务端口
kebuctl get service kubernetes-dashboard -n kubernetes-dashboard输出信息
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard NodePort 10.100.124.90443:31707/TCP 21h 你可以看到Type变成了NodePort,并且Ports多了一个31707端口,这就是我们的nodePort。
如果你是单节点的服务,就可以直接使用https://master-ip:nodePort访问dashboard。
如果你不是单节点服务,你可以需要使用https://node-ip:nodePort访问dashboard。
这里的node-ip指的是运行kubernetes-dashboard服务的节点的IP,可以通过以下方式查看。
# 查看pod运行在那个节点 kubectl get pods -n kubernetes-dashboard -o wide # 查看节点IP kubectl get nodes -A -o wid输出信息
# pod info:kubectl get pods -n kubernetes-dashboard -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES dashboard-metrics-scraper-799d786dbf-lgnx2 1/1 Running 0 73m 10.36.0.0 k8s-worker02获取tokenkubernetes-dashboard-fb8648fd9-wnpkt 1/1 Running 0 73m 10.32.0.3 k8s-worker01 # node info:kubectl get nodes -A -o wid NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master Ready control-plane,master 18h v1.23.6 192.168.116.57 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.14 k8s-worker01 Ready worker 18h v1.23.6 192.168.116.58 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.14 k8s-worker02 Ready worker 18h v1.23.6 192.168.116.59 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.14 # 创建用户 cat > xiaoming.sercrt.yaml << EOF apiVersion: v1 kind: ServiceAccount metadata: name: xiaoming namespace: kubernetes-dashboard EOF kubectl create -f xiaoming.sercrt.yaml # 绑定角色 cat > dashboard.token.yaml << EOF 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: xiaoming namespace: kubernetes-dashboard EOF kubectl apply -f dashboard.token.yaml # 查看创建好的secrets kubectl -n kubernetes-dashboard get secrets # 输出 xiaoming-token-rgvpr kubernetes.io/service-account-token 3 109m default-token-rjzg9 kubernetes.io/service-account-token 3 124m kubernetes-dashboard-certs Opaque 0 124m kubernetes-dashboard-csrf Opaque 1 124m kubernetes-dashboard-key-holder Opaque 2 124m # 查看token kubectl describe secrets -n kubernetes-dashboard xiaoming-token-rgvpr # 输出 Name: zhousong-token-8z495 Namespace: kubernetes-dashboard Labels:其他命令Annotations: kubernetes.io/service-account.name: zhousong kubernetes.io/service-account.uid: ef844eb7-37bc-476e-9bd6-ac80eefa4a5b Type: kubernetes.io/service-account-token Data ==== ca.crt: 1099 bytes namespace: 20 bytes token: <这里是很长的token,登录的时候复制这个就可以了> # 查看命名空间 kubectl get namespace -A # 查看节点信息 kubectl get nodes # 查看pod信息 kubectl get pod -A # 查看描述信息 kubectl describe-n # 查看日志 kubectl logs [-f] [-p] POD [-c CONTAINER] # 查看kubelet运行日志 journalctl -xe kubelet



