十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
前言
小菜鸟一枚,记录学习k8s的路程,如有错漏,纯属虚构~~
1.环境准备
创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为青白江企业提供专业的成都网站设计、成都网站建设,青白江网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
我的配置都是按最低要求准备的:
主机 | 配置 | ip |
---|---|---|
k8s-master-01 | 2C 2G | 192.168.214.220 |
k8s-node-01 | 2C 2G | 192.168.214.230 |
k8s-node-02 | 2C 2G | 192.168.214.240 |
1)先关闭机器的自带防火墙服务,centos6是iptables,centos7是firewalld,再关闭selinux(百度一下,你就得到)$ systemctl stop firewalld
2)关闭服务器的swap分区(主要是为了提高性能,可百度了解一下)
$ vim /etc/fstab
3)服务器可通外网,需要拉取镜像
4)集群各节点配置相互通信
步骤:
①在各节点执行ssh-keygen,一路回车带闪电
②ssh-copy-id 节点ip,如我在master节点上,执行ssh-copy-id root@192.168.214.230,跟着提示完成即可
5)将所有节点信息加入到所有节点的hosts文件,方便后面的操作进行解析
$ vim /etc/hosts
6)将桥接的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
2.部署
2.1 步骤总览:
①在所有节点上安装Docker和kubeadm
②部署Kubernetes Master
③部署容器网络插件
④部署Kubernetes Node,将节点加入Kubernetes集群中
⑤部署Dashboard Web页面,可视化查看Kubernetes资源
2.2 kubernetes架构图
2.3 所有节点安装Docker/kubeadm/kubelet
2.3.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-版本号
$ systemctl enable docker && systemctl start docker
Docker加速:
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
$ docker --version 查看版本
2.3.2 添加阿里云的kubernetes的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=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
2.3.3 安装kubeadm,kubelet和kubectl
$ yum install kubelet kubeadm kubectl -y
$ systemctl enable kubelet
2.4 部署master节点
$ kubeadm init --apiserver-advertise-address=192.168.214.220 \
> --image-repository registry.aliyuncs.com/google_containers \
> --kubernetes-version v1.16.3 \
> --service-cidr=10.1.0.0/16 \
> --pod-network-cidr=10.244.0.0/16 ()
记住输出的token和discovery-token-ca-cert-hash秘钥
执行完后按照最后几行的执行运行命令:
$ 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
2.5 安装pod网络插件(cni)$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
部署时要确保能够访问到quay.io这个镜像仓库地址
2.6 配置node节点$ kubeadm join --token akjlre.8z441kdvooaxki5y 192.168.214.220:6443 --discovery-token-ca-cert-hash sha256:cc61a8822ad4c4da71aae1a57ca891fda8a42c5dde59dc4a00165999eb5cdb14
token 和discovery-token-ca-cert-hash是kubeadm init时输出,往上找去
如果提示token过期,可自行生成:
#生成token
$ kubeadm token create
#生成discovery-token-ca-cert-hash
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
2.7 测试kubernetes集群
在Kubernetes集群中创建一个pod,验证是否正常运行:
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --type=NodePort
$ kubectl get pod,svc
执行 kubectl get cs的时候,返回结果是:
因为我安装的kubectl几个组件是1.16.3的版本,这是1.16版本的bug,不用管他,往下走
2.8 部署Dashboard
$ wget -c https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
$ vim recommended.yaml添加:
$ kubectl apply -f recommended.yaml
$ kubectl get pods -n kubernetes-dashboard
此时就可以访问http://NodeIP:3001
创建service account并绑定默认cluster-admin管理员集群角色:
$ kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
$ kubectl create clusterrolebinding dashdoard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
$ kubectl describe secrets -n kubernetes-dashboard $(kubectl -n kubernetes-dashboard get secret | awk '/dashboard-admin/{print $1}')
登陆后显示界面:
到这儿,就搞定啦,see you~~