kubeadm方式部署Kubernetes 准备三台机器 192.168.174.102 ?master 192.168.174.103 ?noder1 192.168.174.104 ?noder2
关闭防火墙:(三台机器) systemctl stop firewalld systemctl disable firewalld
关闭selinux::(三台机器) sed -i 's/enforcing/disabled/' /etc/selinux/config? setenforce 0
关闭swap::(三台机器) $ swapoff -a ?$ 临时 $ vim /etc/fstab ?$ 永久
添加主机名与IP对应关系(记得设置主机名)::(三台机器) $ cat /etc/hosts 192.168.174.102 ?master 192.168.174.103 ?noder1 192.168.174.104 ?noder2
hostnamectl set-hostname hostname
将桥接的IPv4流量传递到iptables的链: (三台机器) $ cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF $ sysctl --system
4. 所有节点安装Docker/kubeadm/kubelet ? (三台机器)
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
4.1 安装Docker $ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo $ yum -y install docker-ce-20.10.7-3.el7 $ systemctl enable docker && systemctl start docker $ docker --version Docker version 20.10.7, build f0df350 4.2 添加阿里云YUM软件源 $ 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=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
4.3 安装kubeadm,kubelet和kubectl 由于版本更新频繁,这里指定版本号部署: $ yum install -y kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0 $ systemctl enable kubelet
5. 部署Kubernetes (Master) 在192.168.31.63(Master)执行。 $ kubeadm init \ ? --apiserver-advertise-address=192.168.174.102\ ? --image-repository registry.aliyuncs.com/google_containers \ ? --kubernetes-version v1.16.0 \ ? --service-cidr=10.1.0.0/16 \ ? --pod-network-cidr=10.244.0.0/16
.. kubeadm join 192.168.174.102:6443 --token 1cfp0o.z1wintfa8n1es7ud \ ? ? --discovery-token-ca-cert-hash sha256:51eeb8f4bf66ddd78d418a5366fc9b5b96ea8c727a1a3046bb8f6b8ebc6d3482 ? ? ? #记录下两条给到node1和noder2 执行加入
由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。 使用kubectl工具: (以下步骤在第五步跑完后显示在后面) mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config $ kubectl get nodes
6. 安装Pod网络插件(CNI) (在master执行) kubectl apply -f ?https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml [1.16] 确保能够访问到quay.io这个registery。? # kubectl get pods -n kube-system
7. 加入Kubernetes (Node执行) 向集群添加新节点,执行在kubeadm init输出的kubeadm join命令: #注意:以下命令是步骤5 完成后最后一小段 kubeadm join 192.168.174.102:6443 --token 1cfp0o.z1wintfa8n1es7ud \ ? ? --discovery-token-ca-cert-hash sha256:51eeb8f4bf66ddd78d418a5366fc9b5b96ea8c727a1a3046bb8f6b8ebc6d3482 ? ? ? #记录下两条给到node1和noder2 执行加入
8. 测试kubernetes集群(master) 在Kubernetes集群中创建一个pod,验证是否正常运行: $ kubectl create deployment nginx --image=nginx $ kubectl expose deployment nginx --port=80 --type=NodePort $ kubectl get pod,svc $ kubectl get pod,svc -o wide ==================================== noder1和noder2拉取镜像 master机器执行 # kubectl get po -A ... ... kube-system ? kuboard-59bdf4d5fb-ffn8d ? ? ? ? ?1/1 ? ? Running ? 0 ? ? ? ? ?61m kube-system ? metrics-server-78664db96b-5krwm ? 1/1 ? ? Running ? 0 ? ? ? ? ?61m
# kubectl ?describe po metrics-server-78664db96b-5krwm ?-n kube-system ..."eipwork/metrics-server:v0.3.7" 在node1和node2上拉取 # docker ?pull eipwork/metrics-server:v0.3.7 ==============================================
9. 部署 kuboard(建议用)(master) kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml
查询web登录端口 [root@localhost yum.repos.d]# kubectl ?get svc -A NAMESPACE ? ? NAME ? ? ? ? ? ? TYPE ? ? ? ?CLUSTER-IP ? ? EXTERNAL-IP ? PORT(S) ? ? ? ? ? ? ? ? ?AGE default ? ? ? kubernetes ? ? ? ClusterIP ? 10.1.0.1 ? ? ? <none> ? ? ? ?443/TCP ? ? ? ? ? ? ? ? ?95m default ? ? ? nginx ? ? ? ? ? ?NodePort ? ?10.1.182.217 ? <none> ? ? ? ?80:31592/TCP ? ? ? ? ? ? 22m kube-system ? kube-dns ? ? ? ? ClusterIP ? 10.1.0.10 ? ? ?<none> ? ? ? ?53/UDP,53/TCP,9153/TCP ? 95m kube-system ? kuboard ? ? ? ? ?NodePort ? ?10.1.85.219 ? ?<none> ? ? ? ?80:32567/TCP ? ? ? ? ? ? 10m kube-system ? metrics-server ? ClusterIP ? 10.1.226.45 ? ?<none> ? ? ? ?443/TCP ? ? ? ? ? ? ? ? ?10m
master或者node机器的id:32567(如master机器192.168.174.104:32567)
拥有的权限(登录界面) (获取到的钥匙用于登录授权钥匙 “复制粘贴”) 此Token拥有 ClusterAdmin 的权限,可以执行所有操作 echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
执行如下命令可以获得 只读用户 的 Token echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
效果:
?
|