ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【k8s集群应用】kubeadm1.20(单master) [打印本页]

作者: 雁过留声    时间: 2024-12-22 06:37
标题: 【k8s集群应用】kubeadm1.20(单master)
Kubernetes 集群

Kubernetes 集群环境准备

节点设置概览

节点名称设置(CPU/内存)IP地址安装软件master2C/4G(CPU核心数要求大于2)20.0.0.10docker、kubeadm、kubelet、kubectl、flannelnode012C/2G20.0.0.58docker、kubeadm、kubelet、kubectl、flannelnode022C/2G20.0.0.59docker、kubeadm、kubelet、kubectl、flannelHarbor节点-20.0.0.57docker、docker-compose、harbor-offline-v1.2.2 环境准备

注意


Kubernetes 集群环境搭建

全部节点安装 Docker

全部节点安装 kubeadm、kubelet 和 kubectl

Kubernetes 集群摆设

准备工作

事先准备好镜像
初始化 kubeadm

方法一:利用设置文件

方法二:利用命令行参数

   初始化集群需利用kubeadm init命令,可以指定具体参数初始化,也可以指定设置文件初始化。
可选参数:
–apiserver-advertise-address:apiserver告示给其他组件的IP地址,一般应该为Master节点的用于集群内部通信的IP地址,0.0.0.0表现节点上全部可用地址
–apiserver-bind-port:apiserver的监听端口,默认是6443
–cert-dir:通讯的ssl证书文件,默认/etc/kubernetes/pki
–control-plane-endpoint:控制台平面的共享终端,可以是负载均衡的ip地址大概dns域名,高可用集群时需要添加
–image-repository:拉取镜像的镜像仓库,默认是k8s.gcr.io
–kubernetes-version:指定kubernetes版本
–pod-network-cidr:pod资源的网段,需与pod网络插件的值设置同等。Flannel网络插件的默认为10.244.0.0/16,Calico插件的默认值为192.168.0.0/16;
–service-cidr:service资源的网段
–service-dns-domain:service全域名的后缀,默认是cluster.local
–token-ttl:默认token的有用期为24小时,如果不想过期,可以加上 --token-ttl=0 这个参数
     提示
  1. ......
  2. Your Kubernetes control-plane has initialized successfully!
  3. To start using your cluster, you need to run the following as a regular user:
  4. mkdir -p $HOME/.kube
  5. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  6. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  7. You should now deploy a pod network to the cluster.
  8. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  9. https://kubernetes.io/docs/concepts/cluster-administration/addons/
  10. Then you can join any number of worker nodes by running the following on each as root:
  11. kubeadm join 20.0.0.10:6443 --token rc0kfs.a1sfe3gl4dvopck5 \
  12. --discovery-token-ca-cert-hash sha256:864fe553c812df2af262b406b707db68b0fd450dc08b34efb73dd5a4771d37a2
复制代码
设置 kubectl


  1. mkdir -p $HOME/.kube
  2. cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. chown $(id -u):$(id -g) $HOME/.kube/config
复制代码
查抄集群健康状态


  1. systemctl restart kubelet
复制代码
摆设网络插件 Flannel

方法一

  1. cd /opt
  2. docker load < flannel.tar
  3. mv /opt/cni /opt/cni_bak
  4. mkdir -p /opt/cni/bin
  5. tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin
  6. kubectl apply -f kube-flannel.yml
复制代码
方法二

  1. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
复制代码
节点加入集群


  1. kubeadm join 20.0.0.10:6443 --token rc0kfs.a1sfe3gl4dvopck5 \
  2.     --discovery-token-ca-cert-hash sha256:864fe553c812df2af262b406b707db68b0fd450dc08b34efb73dd5a4771d37a2
复制代码
查抄集群状态


  1. kubectl get nodes
复制代码

  1. kubectl get pods -n kube-system
复制代码
  1. NAME                             READY   STATUS    RESTARTS   AGE
  2. coredns-bccdc95cf-c9w6l          1/1     Running   0          71m
  3. coredns-bccdc95cf-nql5j          1/1     Running   0          71m
  4. etcd-master                      1/1     Running   0          71m
  5. kube-apiserver-master            1/1     Running   0          70m
  6. kube-controller-manager-master   1/1     Running   0          70m
  7. kube-flannel-ds-amd64-kfhwf      1/1     Running   0          2m53s
  8. kube-flannel-ds-amd64-qkdfh      1/1     Running   0          46m
  9. kube-flannel-ds-amd64-vffxv      1/1     Running   0          2m56s
  10. kube-proxy-558p8                 1/1     Running   0          2m53s
  11. kube-proxy-nwd7g                 1/1     Running   0          2m56s
  12. kube-proxy-qpz8t                 1/1     Running   0          71m
  13. kube-scheduler-master            1/1     Running   0          70m
复制代码
测试 Pod 资源创建


  1. kubectl create deployment nginx --image=nginx
复制代码

  1. kubectl get pods -o wide
复制代码
  1. NAME                     READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
  2. nginx-554b9c67f9-zr2xs   1/1     Running   0          14m   10.244.1.2   node01   <none>           <none>
复制代码
袒露端口提供服务


  1. kubectl expose deployment nginx --port=80 --type=NodePort
复制代码

  1. kubectl get svc
复制代码
  1. NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
  2. kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        25h
  3. nginx        NodePort    10.96.15.132   <none>        80:32698/TCP   4s
复制代码
测试访问


  1. curl http://<node-ip>:<node-port>
复制代码
例如:
  1. curl http://node01:32698
复制代码

  1. kubectl scale deployment nginx --replicas=3
  2. kubectl get pods -o wide
复制代码
  1. NAME                     READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
  2. nginx-554b9c67f9-9kh4s   1/1     Running   0          66s   10.244.1.3   node01   <none>           <none>
  3. nginx-554b9c67f9-rv77q   1/1     Running   0          66s   10.244.2.2   node02   <none>           <none>
  4. nginx-554b9c67f9-zr2xs   1/1     Running   0          17m   10.244.1.2   node01   <none>           <none>
复制代码
摆设 Dashboard

在 master01 节点上操作。
上传并修改 recommended.yaml 文件

创建 Service Account 并绑定 Cluster Role

访问 Dashboard

Harbor 私有仓库

准备工作

安装 Docker

  1.    cat > /etc/docker/daemon.json <<EOF
  2.    {
  3.   "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
  4.   "exec-opts": ["native.cgroupdriver=systemd"],
  5.   "log-driver": "json-file",
  6.   "log-opts": {
  7.     "max-size": "500m", "max-file": "3"
  8.   },
  9.   "insecure-registries": ["https://hub.xy101.com"]
  10. }
  11. EOF
复制代码
  1. systemctl daemon-reload
  2. systemctl restart docker
复制代码
安装 Harbor

  1. vim harbor.cfg
复制代码
  1. 5 hostname = hub.xy101.com
  2. 9 ui_url_protocol = https
  3. 24 ssl_cert = /data/cert/server.crt
  4. 25 ssl_cert_key = /data/cert/server.key
  5. 59 harbor_admin_password = Harbor12345
复制代码

Docker 登录与镜像推送

Kubernetes 集成

  1. NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)     AGE
  2. service/kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP     10m
  3. service/nginx-deployment   ClusterIP   10.96.222.161   <none>        30000/TCP   3m15s
  4. NAME                                    READY   STATUS    RESTARTS   AGE
  5. pod/nginx-deployment-77bcbfbfdc-bv5bz   1/1     Running   0          16s
  6. pod/nginx-deployment-77bcbfbfdc-fq8wr   1/1     Running   0          16s
  7. pod/nginx-deployment-77bcbfbfdc-xrg45   1/1     Running   0          3m39s
复制代码
安装ipvsadm并查看IPVS设置

  1. yum install ipvsadm -y  # 在Linux系统上安装ipvsadm工具
  2. ipvsadm -Ln             # 查看当前IPVS的配置,包括负载均衡规则等
复制代码
利用curl命令测试访问

  1. curl 10.96.222.161:30000  # 使用curl命令测试访问集群内部IP和端口,这里10.96.222.161是Service的Cluster IP,30000是端口
复制代码
修改Kubernetes服务类型为NodePort

  1. kubectl edit svc nginx-deployment  # 编辑服务
  2. # 找到type字段,修改为NodePort
复制代码
验证服务设置

  1. kubectl get svc
  2. # 输出应表现nginx-deployment的类型为NodePort,PORT(S)为30000:32340/TCP
复制代码
  1. NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
  2. service/kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP           29m
  3. service/nginx-deployment   NodePort    10.96.222.161   <none>        30000:32340/TCP   22m
复制代码
通过欣赏器访问服务

利用集群中任意节点的IP地址和NodePort(32340)访问服务。例如:

授予system:anonymous用户cluster-admin权限

  1. kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
复制代码
内核参数优化

故障排查与重置


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4