教你一次性成功安裝K8S集群(基於一主兩從模式)

2020-12-22 TechWeb

 

作者個人研發的在高並發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時調度方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:

https://github.com/sunshinelyz/mykit-delay

PS: 歡迎各位Star源碼,也可以pr你牛逼哄哄的代碼。

寫在前面

研究K8S有一段時間了,最開始學習K8S時,根據網上的教程安裝K8S環境總是報錯。所以,我就改變了學習策略,先不搞環境搭建了。先通過官網學習了K8S的整體架構,底層原理,又硬啃了一遍K8S源碼。別問我為哈這樣學,只是我覺得對我個人來說,這樣學能讓我更好的理解整套雲原生體系。這不,這次,我總結了如何一次性成功安裝K8S集群的方法。我們今天先來說說如何基於一主兩從模式搭建K8S集群。後面,我們再上如何完全無坑搭建K8S高可用集群的方案。

文章和搭建環境所需要的yml文件已收錄到:https://github.com/sunshinelyz/technology-binghe 和 https://gitee.com/binghe001/technology-binghe 。如果文件對你有點幫助,別忘記給個Star哦!

集群規劃

IP 主機名 節點 作業系統版本 192.168.175.101 binghe101 Master CentOS 8.0.1905 192.168.175.102 binghe102 Worker CentOS 8.0.1905 192.168.175.103 binghe103 Worker CentOS 8.0.1905

基礎配置

在三臺伺服器上的/etc/hosts文件中添加如下配置項。

192.168.175.101  binghe101 192.168.175.102  binghe102 192.168.175.103  binghe103 

檢查系統環境

分別在三臺伺服器上檢查系統的環境。

1.查看伺服器作業系統版本

cat /etc/redhat-release 

安裝Docker和K8S集群的伺服器作業系統版本需要在CentOS 7以上。

2.查看伺服器的主機名

hostname 

注意:集群中伺服器的主機名不能是localhost。

3.查看伺服器的CPU核數

lscpu 

注意:集群中伺服器的CPU核數不能少於2個。

4.查看伺服器網絡

以binghe101(Master)伺服器為例。在伺服器上執行 ip route show 命令來查看伺服器的默認網卡,如下所示。

[root@binghe101 ~]# ip route show default via 192.168.175.2 dev ens33 proto static metric 100  172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown  192.168.175.0/24 dev ens33 proto kernel scope link src 192.168.175.101 metric 100  

在上面的輸出信息中有如下一行標註了binghe101伺服器所使用的默認網卡。

default via 192.168.175.2 dev ens33 proto static metric 100  

可以看到,binghe101伺服器使用的默認網卡為ens33。

接下來,使用ip address命令查看伺服器的IP位址,如下所示。

[root@binghe101 ~]# ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1/128 scope host         valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000     link/ether 00:0c:29:68:06:63 brd ff:ff:ff:ff:ff:ff     inet 192.168.175.101/24 brd 192.168.175.255 scope global noprefixroute ens33        valid_lft forever preferred_lft forever     inet6 fe80::890f:5a92:4171:2a11/64 scope link noprefixroute         valid_lft forever preferred_lft forever 

可以看到,binghe101伺服器上的默認網卡的IP位址為192.168.175.101,K8S將使用此 IP 地址與集群內的其他節點通信。集群中所有K8S所使用的IP位址必須可以互通。

Docker安裝

分別在三臺伺服器上安裝Docker並配置阿里雲鏡像加速器。

1.安裝Docker

新建auto_install_docker.sh腳本文件

vim auto_install_docker.sh 

文件的內容如下所示。

export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com dnf install yum* yum install -y yum-utils  device-mapper-persistent-data  lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo dnf install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm yum install docker-ce docker-ce-cli -y systemctl enable docker.service systemctl start docker.service docker version 

或者指定Docker的版本進行安裝,此時auto_install_docker.sh腳本文件的內容如下所示。

export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com dnf install yum* 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-19.03.8 docker-ce-cli-19.03.8 containerd.io systemctl enable docker.service systemctl start docker.service docker version 

使用如下命令賦予auto_install_docker.sh文件可執行權限。

chmod a+x ./auto_install_docker.sh 

接下來,直接運行auto_install_docker.sh腳本文件安裝Docker即可。

./auto_install_docker.sh 

2.配置阿里雲鏡像加速器

新建腳本文件aliyun_docker_images.sh。

vim aliyun_docker_images.sh 

文件內容如下所示。

mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' {   "registry-mirrors": ["https://zz3sblpi.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker 

為aliyun_docker_images.sh腳本文件賦予可執行權限,如下所示。

chmod a+x ./aliyun_docker_images.sh 

執行aliyun_docker_images.sh腳本文件配置阿里雲鏡像加速器。

./aliyun_docker_images.sh 

系統設置

分別在三臺伺服器上進行系統設置。

1.安裝nfs-utils

yum install -y nfs-utils yum install -y wget 

2.關閉防火牆

systemctl stop firewalld systemctl disable firewalld 

3.關閉 SeLinux

setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 

4.關閉 swap

swapoff -a yes | cp /etc/fstab /etc/fstab_bak cat /etc/fstab_bak |grep -v swap > /etc/fstab 

5.修改 /etc/sysctl.conf

新建sys_config.sh腳本文件。

vim sys_config.sh 

sys_config.sh腳本文件的內容如下所示,

# 如果有配置,則修改 sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g"  /etc/sysctl.conf # 可能沒有,追加 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf # 執行命令以應用 sysctl -p 

執行如下命令賦予sys_config.sh文件可執行權限。

chmod a+x ./sys_config.sh 

執行sys_config.sh腳本文件。

./sys_config.sh 

安裝K8S

分別在三臺伺服器上安裝K8S。

1.配置K8S yum源

新建k8s_yum.sh腳本文件。

vim k8s_yum.sh 

文件的內容如下所示。

cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF 

賦予k8s_yum.sh腳本文件的可執行權限。

chmod a+x ./k8s_yum.sh 

執行k8s_yum.sh文件。

./k8s_yum.sh 

2.卸載舊版本的K8S

yum remove -y kubelet kubeadm kubectl 

3.安裝kubelet、kubeadm、kubectl

yum install -y kubelet-1.18.2 kubeadm-1.18.2 kubectl-1.18.2 

4.修改docker Cgroup Driver為systemd

sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service 

5.重啟 docker,並啟動 kubelet

systemctl daemon-reload systemctl restart docker systemctl enable kubelet && systemctl start kubelet 

綜合安裝腳本

綜上,上述安裝Docker、進行系統設置,安裝K8S的操作可以統一成auto_install_docker_k8s.sh腳本。腳本的內容如下所示。

#安裝Docker 19.03.8 export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com dnf install yum* 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-19.03.8 docker-ce-cli-19.03.8 containerd.io systemctl enable docker.service systemctl start docker.service docker version  #配置阿里雲鏡像加速器 mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' {   "registry-mirrors": ["https://zz3sblpi.mirror.aliyuncs.com"] } EOF systemctl daemon-reload systemctl restart docker  #安裝nfs-utils yum install -y nfs-utils yum install -y wget  #關閉防火牆 systemctl stop firewalld systemctl disable firewalld  #關閉SeLinux setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config  # 關閉 swap swapoff -a yes | cp /etc/fstab /etc/fstab_bak cat /etc/fstab_bak |grep -v swap > /etc/fstab  #修改 /etc/sysctl.conf # 如果有配置,則修改 sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g"  /etc/sysctl.conf sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g"  /etc/sysctl.conf # 可能沒有,追加 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding = 1"  >> /etc/sysctl.conf # 執行命令以應用 sysctl -p  # 配置K8S的yum源 cat < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF  # 卸載舊版本K8S yum remove -y kubelet kubeadm kubectl  # 安裝kubelet、kubeadm、kubectl,這裡我安裝的是1.18.2版本,你也可以安裝1.17.2版本 yum install -y kubelet-1.18.2 kubeadm-1.18.2 kubectl-1.18.2  # 修改docker Cgroup Driver為systemd # # 將/usr/lib/systemd/system/docker.service文件中的這一行 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock # # 修改為 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd # 如果不修改,在添加 worker 節點時可能會碰到如下錯誤 # [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd".  # Please follow the guide at https://kubernetes.io/docs/setup/cri/ sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service  # 設置 docker 鏡像,提高 docker 鏡像下載速度和穩定性 # 如果您訪問 https://hub.docker.io 速度非常穩定,亦可以跳過這個步驟 # curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s ${REGISTRY_MIRROR}  # 重啟 docker,並啟動 kubelet systemctl daemon-reload systemctl restart docker systemctl enable kubelet && systemctl start kubelet  docker version 

注意:我安裝的K8S版本是1.18.2,大家在安裝K8S時,也可以選擇其他版本進行安裝

賦予auto_install_docker_k8s.sh腳本文件可執行權限。

chmod a+x ./auto_install_docker_k8s.sh 

執行auto_install_docker_k8s.sh腳本文件。

./auto_install_docker_k8s.sh 

注意:需要在每臺伺服器上執行auto_install_docker_k8s.sh腳本文件。

初始化Master節點

只在binghe101伺服器上執行的操作。

1.初始化Master節點的網絡環境

# 只在 master 節點執行 # export 命令只在當前 shell 會話中有效,開啟新的 shell 窗口後,如果要繼續安裝過程,請重新執行此處的 export 命令 export MASTER_IP=192.168.175.101 # 替換 k8s.master 為 您想要的 dnsName export APISERVER_NAME=k8s.master # Kubernetes 容器組所在的網段,該網段安裝完成後,由 kubernetes 創建,事先並不存在於您的物理網絡中 export POD_SUBNET=172.18.0.1/16 echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts 

2.初始化Master節點

在binghe101伺服器上創建init_master.sh腳本文件,文件內容如下所示。

#!/bin/bash # 腳本出錯時終止執行 set -e  if [ ${#POD_SUBNET} -eq 0 ] || [ ${#APISERVER_NAME} -eq 0 ]; then   echo -e "33[31;1m請確保您已經設置了環境變量 POD_SUBNET 和 APISERVER_NAME 33[0m"   echo 當前POD_SUBNET=$POD_SUBNET   echo 當前APISERVER_NAME=$APISERVER_NAME   exit 1 fi   # 查看完整配置選項 https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2 rm -f ./kubeadm-config.yaml cat < ./kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.18.2 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers controlPlaneEndpoint: "${APISERVER_NAME}:6443" networking:   serviceSubnet: "10.96.0.0/16"   podSubnet: "${POD_SUBNET}"   dnsDomain: "cluster.local" EOF  # kubeadm init # 根據您伺服器網速的情況,您需要等候 3 - 10 分鐘 kubeadm init --config=kubeadm-config.yaml --upload-certs  # 配置 kubectl rm -rf /root/.kube/ mkdir /root/.kube/ cp -i /etc/kubernetes/admin.conf /root/.kube/config  # 安裝 calico 網絡插件 # 參考文檔 https://docs.projectcalico.org/v3.13/getting-started/kubernetes/self-managed-onprem/onpremises echo "安裝calico-3.13.1" rm -f calico-3.13.1.yaml wget https://kuboard.cn/install-script/calico/calico-3.13.1.yaml kubectl apply -f calico-3.13.1.yaml 

賦予init_master.sh腳本文件可執行權限。

chmod a+x ./init_master.sh 

執行init_master.sh腳本文件。

./init_master.sh 

3.查看Master節點的初始化結果

(1)確保所有容器組處於Running狀態

# 執行如下命令,等待 3-10 分鐘,直到所有的容器組處於 Running 狀態 watch kubectl get pod -n kube-system -o wide 

如下所示。

[root@binghe101 ~]# watch kubectl get pod -n kube-system -o wide Every 2.0s: kubectl get pod -n kube-system -o wide                                                                                                                          binghe101: Sat May  2 23:40:33 2020  NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE        NOMINATED NODE   READINESS GATES calico-kube-controllers-5b8b769fcd-l2tmm   1/1     Running   0          3m59s   172.18.203.67     binghe101               calico-node-8krsl                          1/1     Running   0          3m59s   192.168.175.101   binghe101               coredns-546565776c-rd2zr                   1/1     Running   0          3m59s   172.18.203.66     binghe101               coredns-546565776c-x8r7l                   1/1     Running   0          3m59s   172.18.203.65     binghe101               etcd-binghe101                             1/1     Running   0          4m14s   192.168.175.101   binghe101               kube-apiserver-binghe101                   1/1     Running   0          4m14s   192.168.175.101   binghe101               kube-controller-manager-binghe101          1/1     Running   0          4m14s   192.168.175.101   binghe101               kube-proxy-qnffb                           1/1     Running   0          3m59s   192.168.175.101   binghe101               kube-scheduler-binghe101                   1/1     Running   0          4m14s   192.168.175.101   binghe101               

(2) 查看 Master 節點初始化結果

kubectl get nodes -o wide 

如下所示。

[root@binghe101 ~]# kubectl get nodes -o wide NAME        STATUS   ROLES    AGE     VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION         CONTAINER-RUNTIME binghe101   Ready    master   5m43s   v1.18.2   192.168.175.101           CentOS Linux 8 (Core)   4.18.0-80.el8.x86_64   docker://19.3.8 

初始化Worker節點

1.獲取join命令參數

在Master節點上執行如下命令獲取join命令參數。

kubeadm token create --print-join-command 

具體執行如下所示。

[root@binghe101 ~]# kubeadm token create --print-join-command W0502 23:44:55.218947   59318 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io] kubeadm join k8s.master:6443 --token s0hoh1.2cwyf1fyyjl2h04a     --discovery-token-ca-cert-hash sha256:6d78e360dc64d84762611ac6beec8ac0f0fe9f72a5c2cca008df949e07827c19 

其中,有如下一行輸出。

kubeadm join k8s.master:6443 --token s0hoh1.2cwyf1fyyjl2h04a     --discovery-token-ca-cert-hash sha256:6d78e360dc64d84762611ac6beec8ac0f0fe9f72a5c2cca008df949e07827c19 

這行代碼就是獲取到的join命令。

注意:join命令中的token的有效時間為 2 個小時,2小時內,可以使用此 token 初始化任意數量的 worker 節點。

2.初始化Worker節點

針對所有的 worker 節點執行,在這裡,就是在binghe102伺服器和binghe103伺服器上執行。

創建init_worker.sh腳本文件,文件內容如下所示。

# 只在 worker 節點執行 # 192.168.175.101 為 master 節點的內網 IP export MASTER_IP=192.168.175.101 # 替換 k8s.master 為初始化 master 節點時所使用的 APISERVER_NAME export APISERVER_NAME=k8s.master echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts  # 替換為 master 節點上 kubeadm token create 命令輸出的join kubeadm join k8s.master:6443 --token s0hoh1.2cwyf1fyyjl2h04a     --discovery-token-ca-cert-hash sha256:6d78e360dc64d84762611ac6beec8ac0f0fe9f72a5c2cca008df949e07827c19 

其中,kubeadm join...就是master 節點上 kubeadm token create 命令輸出的join。

賦予init_worker.sh腳本文件文件可執行權限,並執行init_worker.sh腳本文件。

chmod a+x ./init_worker.sh ./init_worker.sh 

3.查看初始化結果

在Master節點執行如下命令查看初始化結果。

kubectl get nodes -o wide 

如下所示。

[root@binghe101 ~]# kubectl get nodes NAME        STATUS   ROLES    AGE     VERSION binghe101   Ready    master   20m     v1.18.2 binghe102   Ready       2m46s   v1.18.2 binghe103   Ready       2m46s   v1.18.2 

注意:kubectl get nodes命令後面加上-o wide參數可以輸出更多的信息。

重啟K8S集群引起的問題

1.Worker節點故障不能啟動

Master 節點的 IP 地址發生變化,導致 worker 節點不能啟動。需要重新安裝K8S集群,並確保所有節點都有固定的內網 IP 地址。

2.Pod崩潰或不能正常訪問

重啟伺服器後使用如下命令查看Pod的運行狀態。

kubectl get pods --all-namespaces 

發現很多 Pod 不在 Running 狀態,此時,需要使用如下命令刪除運行不正常的Pod。

kubectl delete pod  -n  

注意:如果Pod 是使用 Deployment、StatefulSet 等控制器創建的,K8S 將創建新的 Pod 作為替代,重新啟動的 Pod 通常能夠正常工作。

  

相關焦點

  • 容器編排系統k8s之Service資源
    Service資源在k8s上主要用來解決pod訪問問題;我們知道在k8s上pod由於各種原因重建,對於重建後的podip地址和名稱都是變化的,這樣一來使得我們訪問pod就變得有些不便;為了解決pod訪問能有一個固定的端點,在k8s上就是用service來解決的;簡單來講,service對象就是工作在節點上的一組iptables或ipvs規則,用於將到達service
  • Kubernetes 私有集群 LoadBalancer 解決方案
    即 MetalLB 能夠幫助你在裸金屬 Kubernetes 集群中創建 LoadBalancer 類型的 Kubernetes 服務,該項目發布於 2017 年底,當前處於 Beta 階段。注意:MetalLB 項目還是處於 Beta 階段,暫時不推薦用於生產環境。
  • Go 1.16 中關於 go get 和 go install 你必須注意的地方
    整體而言,包含以下要點:GO111MODULE 默認為 on ,如果要恢復到之前的行為,則需要將 GO111MODULE 設置為 auto ,這樣差不多意味著 GOPATH 模式要逐步淡出人們的視野了;go install 命令可以接受一個版本後綴了,(例如,go install sigs.k8s.io/kind@v0.9.0),並且它是在模塊感知的模式下運行,可忽略當前目錄或上層目錄的 go.mod
  • 從虛機到容器,秒拍架構師告訴你如何平滑進行業務遷移
    以下是秒拍架構師李東輝對本次業務遷移的記錄,如果你也希望從虛機向更靈活的容器升級,又不希望影響業務,不妨一看:背景我們現在主體業務已經是部署在某雲上了,但整個技術體系,還是基於傳統的虛擬機去承載的,由於我們產品本身的媒體屬性,導致了不可避免的會經常遇到突發流量,相比於一直比較平穩的流量,這種對服務端的考驗更高,核心關注點還是在怎麼保障在這種時刻用戶都能得到良好的體驗
  • K8s命令篇-Kubernetes工作實用命令集結號
    在實際工作中熟練的使用這些命令去定位K8s集群問題時是我們愛不釋手的好伴侶,來和我們相互認識下吧。CA授權的cert文件路徑--client-certificate=用於TLS的客戶端證書文件路徑--client-key=用於TLS的客戶端key文件路徑--cluster=設置要使用的kubeconfig中的cluster名--context=設置使用的kubeconfig中的context的名--insecure-skip-tls-verify=false設置為true表示跳過TLS安全驗證模式
  • 手把手教你用 Jenkins + K8S 打造流水線環境
    ip 為 docker 所在機器的 ip, port 為 Jenkins 容器映射的宿主機埠Jenkins 啟動成功後,需要執行一些快速的 "一次性" 步驟。當你第一次訪問一個新的 Jenkins 實例時, 要求你使用自動生成的密碼對其進行解鎖。
  • K8S生態再添一員,Rancher發布開源HCI軟體Harvester
    Harvester基於Kubernetes、KubeVirt和Longhorn等尖端開源技術構建,是傳統超融合基礎架構軟體的開源替代方案。我們設計並開發的Harvester秉承了Rancher簡潔易用的產品特性,更易於理解、安裝以及操作,用戶無需擁有任何與Kubernetes相關的知識,即可輕鬆上手Harvester,並享受Kubernetes帶來的所有好處。
  • 成都凌點科技告訴你ARM集群伺服器適合的應用場景有哪些
    1 什麼是高密度ARM集群伺服器ARM集群伺服器,是在一個機箱內設計N個高性能ARM處理器,每個ARM處理器配置獨立的內存及存儲,所有的處理器通過高速網絡(千兆或萬兆網絡)進行相互之間以及對外通信的一種設備。ARM處理器的個數N稱為密度,N可以是2以上的任意數字。
  • redis學習筆記(六)分片集群
    主從集群模式實例圖如下所示:    分片集群模式實例圖如下所示:一、redis如何應對數據量增多的擴展方式·  縱向擴展    升級單個redis實例的配置,比如增加實例內存、增加磁碟容量、採用高配CPU。
  • Edxposed學習研究(一)手把手教你安裝Edxposed
    可以用如下adb 命令進入twrp recovery:adb reboot recovery(1)、進入recovery之後的主界面如下:(2)、在recovery主界面依次操作"Wipe->Advanced Wipe",然後選中除"Internal Storage"以外的選項完成後點擊"Wipe"完成刷機之前的清理操作。
  • Consul集群搭建
    1、首先去官網下載consul安裝包並解壓即可安裝consulConsul官網:https://www.consul.iowget https://releases.hashicorp.com/consul/1.5.3/consul_1.5.3_linux_amd64
  • MySQL基於MHA的FailOver過程
    本文介紹MySQL基於MHA的FailOver過程。Retrieved_gtid_set(已接收到的gtid大小),executed_gtid_set(已執行的gtid號大小)3.數據補償4.解除從庫身份5.剩餘從庫和新主庫構建主從關係6.應用透明7.修復故障主節點(k8s
  • 有了這款商業分布式塊存儲,K8s 上跑資料庫也不用擔心了
    所以和其他服務管理系統一樣,K8s逐漸的將存儲系統的具體實現從主項目中分離出來,通過定義接口的方式允許第三方廠商自行接入存儲服務。在這個道路上也經歷了兩個階段:1. Flex Volume,自1.2版本引入。
  • 家裡安裝路由器,拉網線太難看,教你不用線的方法
    這樣的問題幾乎人人碰到,房子裝修很整潔,可要安裝個路由器,發現沒地方拉線。不急,現在教給你這種方法,完美解決你的問題。首先,聲明一點,市場上的路由器各種各樣,每種的連接方式都有不同,不過大同小異。會一種的連接方法,就差不多能掌握其他路由器的連接方式。
  • 教你用Legacy模式和Uefi模式引導修復軟體
    引導模式以此來啟動電腦系統;而UEFI啟動模式則只能在UEFI引導模式來啟動電腦系統。但在這裡需要提醒大家的是: 1、電腦要安裝系統時候需要選好啟動模式,然後安裝好系統之後就只能使用你選定的模式來啟動電腦系統,不然則出現啟動進不了系統的情況。 2、我們在安裝電腦系統的時候要是採用Legacy+UEFI模式,則電腦能夠兼容傳統BIOS引導模式才能成功啟動作業系統,需要了解電腦是否支持傳統BIOS引導模式。
  • 一飛智控無人機集群表演在天津大學創造金氏世界紀錄
    挑戰當天,金氏世界紀錄官方認證官全程參與並完成官方審核查驗,最終宣布全程連續飛行動畫過程用時26分19秒,成功創造全球「最長時長無人機表演的動畫」這一全新記錄,挑戰圓滿成功。本次挑戰之時正值北方寒冬,室外氣溫為-8℃,在極冷的天氣能飛出最長航時,證明了該技術的廣泛地域適應性,這也標誌著我國無人機民用集群領域的技術又邁向了新的臺階,開啟了用科技演繹空中動畫藝術的新時代。
  • 大藤峽6號機組一次性開機成功,標誌著左岸廠房所有機組開機成功
    近日,大藤峽水利樞紐左岸廠房6號水輪發電機組一次性開機完成,這是繼8號機、7號機後左岸場房最後一臺機組。至此,大藤峽水利樞紐左岸廠房所有機組均一次性開機成功。大藤峽水利樞紐採用的發電機組為200MW的軸流轉槳式水輪發電機組,單機容量20萬千瓦,是目前國內最大的軸流轉槳式發電機組,裝機難度極大,左岸廠房3臺機組的一次性開機成功,展現了八局機電的高水平安裝工藝。
  • influxdb詳細安裝配置教程 influxdb怎麼安裝配置
    influxdb詳細安裝配置教程 influxdb怎麼安裝配置  influxdb是一款開源的時序資料庫,可以用作監控系統的數據存儲或用來存儲基於時序進行分析的業務系統的數據存儲