成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何快速搭建Kubernetes實驗環境?

云計算
如果kubelet本身就是運行在一個容器里,那么直接操作宿主機就會變的很麻煩,所以為了解決這個問題,kubeadm選擇直接將kubelet部署在宿主機上,然后使用容器部署其他組件。

[[411640]]

很多小伙伴想學kubernetes,都會遇到這些問題

  • 手里沒有可用的服務器
  • 打開kubernetes官方文檔,看到復雜的組件學不下去

今天就介紹一種省錢省時的方式來玩kubernetes

準備服務器

很多小伙伴電腦配置比較高,可以直接用虛擬機開兩臺機器,至少得確保自己的電腦16G內存以上

我一個窮鬼,用著8G內存小本,沒辦法,我選擇云服務器

在阿里云平臺充值100塊,選擇按量付費,每小時3毛錢的2c4G突發性能實例,玩一晚上也就一罐紅牛的價格

服務器開好就可以開始部署kubernetes了,本文采用kubeadm方式快速搭建kubernetes集群

修改系統參數

  • 加載br_netfilter模塊
  1. 查看是否加載br_netfilter 
  2. lsmod | grep br_netfilter 
  3. 加載br_netfilter 
  4. modprobe br_netfilter 
  5. 或者修改module-load文件 
  6. cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf 
  7. br_netfilter 
  8. EOF 
  • 開啟iptables檢查橋接流量
  1. cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf 
  2. net.bridge.bridge-nf-call-ip6tables = 1 
  3. net.bridge.bridge-nf-call-iptables = 1 
  4. EOF 
  5. sudo sysctl --system 
  • 關閉swap
  1. swapoff -a 
  • 關閉防火墻及selinux
  1. systemctl stop firewalld && systemctl disable firewalld 
  2. setenforce 0 
  3. sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config 
  • 設置主機名
  1. master: hostnamectl set-hostname k8s-master 
  2. node: hostnamectl set-hostname k8s-node01 
  • 添加host
  1. cat >> /etc/hosts << EOF 
  2. 192.168.4.34 k8s-master 
  3. 192.168.4.35 k8s-node01 
  4. EOF 
  • 設置時鐘同步,用ntpdate或chronyd
  1. yum -y install epel-release chrony && systemctl enable chronyd && systemctl start chronyd 

安裝docker

  1. # 配置docker-ce的yum源 
  2. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 
  3. # 安裝docker-ce 
  4. yum -y install docker-ce 
  5. # 設置開機自啟動并啟動docker 
  6. systemctl enable docker && systemctl start docker 
  7. # 查看docker版本 
  8. docker version 

配置kubernetes的yum源

  1. cat > /etc/yum.repos.d/kubernetes.repo << EOF 
  2. [kubernetes] 
  3. name=Kubernetes 
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
  5. enabled=1 
  6. gpgcheck=0 
  7. repo_gpgcheck=0 
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
  9. EOF 

安裝kubeadm、kubelet、kubectl

  1. yum -y install kubeadm kubelet kubectl 
  2. systemctl enable kubelet 

kubelet是kubernetes項目用來操作Docker等容器運行時的核心組件,在每個節點上都存在,可以說除了跟容器運行時打交道外,kubelet在配置容器網絡、管理容器數據卷時,他都需要直接操作宿主機

如果kubelet本身就是運行在一個容器里,那么直接操作宿主機就會變的很麻煩,所以為了解決這個問題,kubeadm選擇直接將kubelet部署在宿主機上,然后使用容器部署其他組件

部署kubernetes Master

  1. kubeadm init \ 
  2. --apiserver-advertise-address=172.22.29.78 \ 
  3. --image-repository registry.aliyuncs.com/google_containers \ 
  4. --kubernetes-version v1.21.2 \ 
  5. --service-cidr=10.1.0.0/16 \ 
  6. --pod-network-cidr=10.244.0.0/16 

提示coredns:v1.8.0不存在,解決辦法:

  1. # 添加docker加速器 
  2. tee /etc/docker/daemon.json <<-'EOF' 
  3.   "registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"
  4. EOF 
  5. systemctl daemon-reload 
  6. systemctl restart docker 
  7. # 手動下載coredns鏡像 
  8. docker pull coredns/coredns:1.8.0 
  9. # 修改鏡像tag 
  10. docker tag coredns/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.0 

之后再重新初始化

最后生成的join部分是節點加入集群的命令

  • 根據提示操作,創建kubectl
  1. mkdir -p $HOME/.kube 
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config 
  • 設置kubectl自動補充
  1. source <(kubectl completion bash) 

默認token有效期24小時,過期后token不可用,如果后續有node加入,解決方法是重新生成token

  1. kubeadm token create 
  • 查看token
  1. kubeadm token list 

  • 查看pod
  1. kubectl get pod --all-namespaces 

可以看到coredns的pod沒有啟動,是pending狀態,node節點為NotReady,缺少網絡pod

node加入集群

  1. kubeadm join 172.22.29.78:6443 --token gtj686.cu5kxoxbgq8iha4m \ 
  2.         --discovery-token-ca-cert-hash sha256:e6aa8e197b74a08d9bae4b5d72854a49980539bc504691440fe5d716a3d299d9 

查看node

安裝網絡,這里選擇calico

  1. kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 

安裝后查看pod狀態

從下載鏡像到初始化到running狀態

calico網絡安裝的時候,其中有一個pod一直是imagepullbackoff狀態

后來發現是因為node沒有做鏡像倉庫加速處理,所以鏡像下載失敗,導致pod狀態一直是imagepullbackoff狀態

配置完成后,Pod自動下載鏡像,所有pod都running狀態

查看node節點的images

至此kubernetes集群部署完畢

測試kubernetes

在集群中創建一個pod,對外暴露端口,驗證是否正常訪問

  1. # 創建一個nginx的deployment 
  2. kubectl create deployment nginx --image=nginx 
  3. # 對外暴露端口 
  4. kubectl expose deployment nginx --port=80 --type=NodePort 
  5. # 查看pod和svc 
  6. kubectl get pod,svc 

可以看到nginx的pod映射到宿主機端口為30830,安全組和防火墻開放的情況下嘗試訪問

部署dashboard

  1. # 下載dashboard編排文件 
  2. wget  https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml 
  3. # 以該編排文件創建pod 
  4. kubectl create -f recommended.yaml 
  5. # 查看創建好的pod和svc 
  6. kubectl get pod,svc -n kubernetes-dashboard 

這里改了recommended.yaml里面,kubernetes-dashboard的端口類型為nodeport,并對外暴露30000

訪問提示兩種登錄方式,這里用token登錄

  1. # 獲取token 
  2. kubectl describe secrets -n kubernetes-dashboard 

復制token然后登錄

提示沒有權限,重新創建

  1. # 創建sa,并綁定cluster-admin權限 
  2. apiVersion: v1 
  3. kind: ServiceAccount 
  4. metadata: 
  5.   name: dashboard-admin 
  6.   namespace: kube-system 
  7. --- 
  8. kind: ClusterRoleBinding 
  9. apiVersion: rbac.authorization.k8s.io/v1beta1 
  10. metadata: 
  11.   name: dashboard-admin 
  12. subjects: 
  13.   - kind: ServiceAccount 
  14.     name: dashboard-admin 
  15.     namespace: kube-system 
  16. roleRef: 
  17.   kind: ClusterRole 
  18.   name: cluster-admin 
  19.   apiGroup: rbac.authorization.k8s.io 
  20.  
  21. # 將上面的編排文件保存為k8s-admin.yaml,然后創建 
  22. kubectl create -f k8s-admin.yaml 

重新獲取token,重新登錄

  1. kubectl describe secret -n kube-system 

創建用戶的時候,這里走進誤區了,剛開始一直創建的是在kubernetes-dashboard的namespaces,其實這個namespaces下什么權限都沒有,所以它創建的user的token是獲取不到任何內容的

修改了yaml,重新創建sa之后,在kube-system中找到dashboard-admin用戶的token,重新登錄后,一切ok

 

責任編輯:武曉燕 來源: 運維研習社
相關推薦

2023-08-03 07:35:10

kubernetes云原生

2012-02-16 10:00:59

2010-06-04 16:17:02

2022-08-21 16:50:36

Kubeadm?Kubernetes

2020-05-20 13:53:41

HTTP環境安裝

2019-07-04 13:10:53

Docker設計云計算

2020-04-01 11:11:35

Hadoop運行環境分布式

2011-03-15 15:51:12

netfilteriptables

2021-05-07 09:31:33

KindK8s Operator

2015-10-26 10:14:13

Android開發環境robolectric

2024-10-25 15:25:42

2022-10-08 11:31:30

KubernetesShellRoot

2019-07-23 07:30:16

2015-01-05 14:16:16

DockerFig自動化容器編排

2020-06-24 11:32:28

網絡安全網絡安全技術周刊

2013-07-02 10:58:48

云計算虛擬化IBM

2021-03-12 08:00:00

Kubernetes工具

2010-02-03 14:37:10

Python 開發環境

2009-07-21 14:18:01

Rails運行環境

2014-11-16 16:22:11

大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕91av | 黄免费观看视频 | 一区二区三区在线播放 | 天天操夜夜艹 | 日韩不卡一区二区三区 | 欧美久久久久久 | 国产精品亚洲第一 | 欧美精品一区二区在线观看 | 国产精品资源在线 | 亚洲导航深夜福利涩涩屋 | 久久精品国产亚洲一区二区 | 亚洲综合在线一区 | 国产福利在线 | 日本精品视频 | 国产成人综合亚洲欧美94在线 | 亚洲 中文 欧美 日韩 在线观看 | 91精品国产一区二区三区蜜臀 | 久久久精品网站 | 最新日韩av | 亚洲精品 在线播放 | 久久久www成人免费精品 | 黄色一级片在线播放 | 亚洲国产精品一区二区三区 | 日韩一区二区在线播放 | 国产精品18久久久久久白浆动漫 | 亚洲精品久久 | 亚洲狠狠 | 成人性生交大片免费看r链接 | av网站在线免费观看 | 久久国产视频网站 | 乱码av午夜噜噜噜噜动漫 | 成人久草 | 日韩电影在线 | 国产成人自拍一区 | 日韩精品在线看 | 91天堂网| av黄色免费 | 69精品久久久久久 | 久久婷婷国产麻豆91 | 狠狠久| 欧美一级在线 |