在上一篇我们已经初步认识了Kubernetes,在本篇我们就开始着手搭建kubernetes,具体操作如下:
1.环境准备
(1).环境说明
节点名称 | 机器IP | 系统 |
master | 10.2.3.191 | CentOS7.7 |
node1 | 10.2.3.192 | CentOS7.7 |
node2 | 10.2.3.190 | CentOS7.7 |
(2).禁止swap(三台机器上都操作)
swapoff -a #临时
改配置文件/etc/fstab(永久生效)
vim /etc/fstab
(3).关闭防火墙、selinux(三台机器上都操作)
(4).修改hosts(三台机器上都操作)
vim /etc/hosts
10.2.3.191 k8s-master
10.2.3.192 k8s-node1
10.2.3.190 k8s-node2
(5).修改三台机器的hostname
1).master
hostname k8s-master
vim /etc/sysconfig/network
2).node1
hostname k8s-node1
vim /etc/sysconfig/network
3).node2
hostname k8s-node2
vim /etc/sysconfig/network
(6).安装docker(三台机器上都操作)
此处安装的是docker最新版本19.03.6
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl enable docker
systemctl start docker
(7).安装kubeadm、kubectl、kubelet(三台机器上都操作)
kubeadm:用于初始化Cluster
kubectl:是一个客户端,管理k8s集群的。是Kubernetes命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。
kubelet:运行在Cluster所有节点上,负责启动Pod和容器。
添加阿里云的yum源:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
查看yum源是否配置成功:
yum info kubeadm
安装这3个工具
yum install -y kubelet kubeadm kubectl
查看是否安装成功
rpm -qa|grep kube
将kubelet启
systemctl enable kubelet
systemctl start kubelet
2.部署kubernetes master(在master上执行)
首先执行以下命令
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
部署kubernetes
kubeadm init \
--apiserver-advertise-address=10.2.3.191 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=1.17.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
要开始使用群集,需要运行以下命令:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
此时可以查看节点信息,发现只有一个master
kubectl get nodes
此时显示 master的状态是 NotReady
此时还要记录下来安装完成的加入node节点命令(后续会使用到,master节点上不用执行了),如下:
kubeadm join 10.2.3.191:6443 --token t3gjda.3lynr5n09p0rc5j8 \
--discovery-token-ca-cert-hash sha256:e8de00b05c32cbb454184ce126049309ab305e4cab1ee65c2ff136063a778c29
3.安装Pod网络插件(CNI) (在master上执行)
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i 's/quay.io\/coreos/registry.cn-beijing.aliyuncs.com\/imcto/g' kube-flannel.yml
kubectl apply -f kube-flannel.yml
此时再次查看 master的状态
已经显示为 Ready。
4.将node节点加入到集群中去(分别在node1和node2上执行)
(1).node1上执行以下语句
首先执行以下命令
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
然后执行加入集群命令
kubeadm join 10.2.3.191:6443 --token t3gjda.3lynr5n09p0rc5j8 \
--discovery-token-ca-cert-hash sha256:e8de00b05c32cbb454184ce126049309ab305e4cab1ee65c2ff136063a778c29
(2).node2上执行以下语句
首先执行以下命令
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
然后执行加入集群命令
kubeadm join 10.2.3.191:6443 --token t3gjda.3lynr5n09p0rc5j8 \
--discovery-token-ca-cert-hash sha256:e8de00b05c32cbb454184ce126049309ab305e4cab1ee65c2ff136063a778c29
此时可以在master上执行以下命令查看node节点是否已经加入
kubectl get nodes
5.创建Pod以验证集群是否正常(在master上执行)
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
此时可以在界面访问nginx,地址如下:
http://10.2.3.191:31185/
6.部署Dashboard (在master上执行)
dashboard的github仓库地址:https://github.com/kubernetes/dashboard
(1).部署dashboard
此时需要在master的hosts中配置如下
vim /etc/hosts
199.232.28.133 raw.githubusercontent.com
要部署仪表板,请执行以下命令:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
查看是否已经运行
kubectl get pods -n kubernetes-dashboard
(2).端口设置
在默认情况下,dashboard并不对外开放访问端口,这里简化操作,直接使用nodePort的方式将其端口暴露出来,修改serivce部分的定义:
vi recommended.yaml
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort #增加的
ports:
- port: 443
targetPort: 8443
nodePort: 30001 #增加
selector:
k8s-app: kubernetes-dashboard
删除刚才生成的配置信息
kubectl delete -f recommended.yaml
再次部署
kubectl apply -f recommended.yaml
查看状态
kubectl get pods -n kubernetes-dashboard
此时可以通过浏览器访问拉
https://10.2.3.191:30001/
(3).查看访问Dashboard的认证令牌
#创建虚拟账户,只面向应用不面向用户
kubectl create serviceaccount dashboard-admin -n kube-system
#集群角色绑定
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
获取token用户登录使用
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
此时根据获取的token登陆系统
eyJhbGciOiJSUzI1NiIsImtpZCI6InBTN2xEaGZCaGt5Y21aWGdkRlFzOS1nR0NHTFRsLWVOeTRnWDE4Q0RDV0UifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tMjg4dGoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYjc4MjRkNzgtZjUwNi00Yjk1LTk1ZjAtZDVhM2E0Y2ZlNGY2Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.uwUBZb00eOoXl1ivzTZz1HtMaUtL4T7ZnP0dTdun7v6MVXgQxI-K9nn1jFiOI57YsIRR6vSBvGlXYMLyzoh4nWcV8i7cte__4IG7Jl9_gVQ-KH58OZByleaI0W1kg3cT4DeEP8aHENt-WMglVINehn6ZEZ_XL0-h2fn_6hhDQRNXsFpFvwxcfnZBJ_eBKkXqbOEEMaoETF4K9mIc2chClIKZM5AXlFtMOHqwGgmpSdEBkWDIAjKWX_hIHJo-XdU3mFnhcYQyS9ZcssFMSniHysrJT_gt0F4uLylSHX0vUrtgOvj8MBPGPnFitIexdGzYrKIFZjlkQOaMPQGL8ClL2Q
至此Kubernetes搭建完成。
标签:1.17,Kubernetes,kubernetes,kubectl,--,master,dashboard,yum,kubeadm From: https://blog.51cto.com/u_13753753/6212012