基础环境
系统 | 名称 | 内存 | IP |
---|---|---|---|
centos7.2 | master | 2G | 192.168.2.122 |
centos7.2 | node | 2G | 192.168.2.123 |
centos7.2 | node | 2G | 192.168.2.124 |
1、环境准备
-
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld -
关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0 -
关闭swap:
swapoff -a 临时
vim /etc/fstab 永久
注释掉swap那一行
-
添加主机名与IP对应关系
追加
cat << EOF >> /etc/hosts
192.168.2.122 k8s-master
192.168.2.123 k8s-node1
192.168.2.124 k8s-node2
EOF -
将桥接的ip4流量传递到iptables的链上
新建k8s.conf
cat << EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
应用
sysctl --system
2、所有节点安装dokcer/kubeadm/kubelet
-
安装dokcer
使用阿里云仓库
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-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker -version -
添加阿里云yum软件源
cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF -
安装kubeadm,kubelet,kubectl
查看版本
https://www.jianshu.com/p/75091ad364c1
yum install -y kubelet-1.13.5 kubeadm-1.13.5 kubectl-1.13.5
发现1.13.5版本不报错,1.13.3报错
报错简单解决
https://blog.csdn.net/u013355826/article/details/89557989
复杂解决
https://blog.51cto.com/sdsca/2383374?source=dra
systemctl enable kubelet
3、部署kubernetes master
-
kubeadm init
--apiserver-advertise-address=192.168.2.122
--image-repository registry.aliyuncs.com/google_containers
--kubernetes-version v1.13.5
--service-cidr=10.1.0.0/16
--pod-network-cidr=10.244.0.0/16 -
执行kubectl工具
此命令在安装完master完成后提示的
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
k8s-master NotReady master 5m37s v1.13.5
出现这个没有安装pod网络插件 -
安装pod网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
如果等10min
kube-flannel-ds-amd64-5zpfz 0/1 Init:ErrImagePull 0 2m1s
还是这样
就自己拉取镜像quay.io/coreos/flannel:v0.11.0-amd64再文件kube-flannel.yml里看得到
这个一起lizhenliang/flannel:v0.11.0-amd64
- 添加从节点node
此命令在安装完master完成后提示的
kubeadm join 192.168.2.122:6443 --token o1910k.y2vg71t9xjlz0gxf --discovery-token-ca-cert-hash sha256:73485c5142af7857bb517e9ff99385f4124bee5c022cbd7a317d60b866bf582a
再次查看kubeadm join这个token
kubeadm token create --print-join-command
- 测试kubernetes集群
用命令启动一个nginx
kubectl create deployment nginx-fanlei --image=nginx
暴露服务
kubectl expose deployment nginx-fanlei --port=80 --type=NodePort --target-port=80 --name=nginx-service
这一步说是将服务暴露出去,实际上是在服务前面加一个负载均衡,因为pod可能分布在不同的结点上。
–port:暴露出去的端口
–type=NodePort:使用结点+端口方式访问服务
–target-port:容器的端口
–name:创建service指定的名称
https://blog.csdn.net/sinat_35930259/article/details/80008750
查看浏览器访问端口
kubectl get pod,svc
- 部署Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
修改 dashboard deployment 镜像地址为 lizhenliang/kubernetes-dashboard-amd64:v1.10.1
修改service为(添加一个type:NodePort)
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type:NodePort
ports:
- port: 443
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
应用
kubectl apply -f kubernetes-dashboard.yaml
- 创建并绑定token(UI账户登陆)
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}')
- 设置UI管理的 token有效时长
https://blog.csdn.net/u013201439/article/details/80930285
网友评论