美文网首页
kubernetes的kubeadm

kubernetes的kubeadm

作者: kf_0169 | 来源:发表于2019-06-17 11:51 被阅读0次

基础环境

系统 名称 内存 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

查看版本
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

如果等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

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}')

相关文章

网友评论

      本文标题:kubernetes的kubeadm

      本文链接:https://www.haomeiwen.com/subject/dktafctx.html