国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

k8s入門講解

IT那活兒 / 1586人閱讀
k8s入門講解

點擊上方“IT那活兒”,關注后了解更多內容,不管IT什么活兒,干就完了!!!



K8S原理以及概念
1. 基本概念
Kubernetes開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes目標是讓部署容器化的應用簡單并且高效(powerful,Kubernetes維護的一種機制)。
1.1  Kubernetes 特點
  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud);
  • 可擴展: 模塊化, 插件化, 可掛載, 可組合;
  • 自動化: 自動部署,自動重啟,自動復制,自動伸縮/擴展;
  • 快速部署應用,快速擴展應用;
  • 無縫對接新的應用功能;
  • 節省資源,優化硬件資源的使用。
k8s:核心架構圖
2. K8S組件
1)APIserver
所有服務的統一入口。
2)Controllermanager
維持副本期望數目。
3)sureduler
負責介紹任務,選擇合適的節點運行。
4)etcd
鍵值對數據庫,儲存k8s集群所有的重要信息(持久化)。
5)coredns
可以為集群中svc創建一個域名ip的對應關系解析。
6)dashboard
給k8s集群提供一個B/S結構訪問體系(瀏覽器與服務器架構模式)。
7)imgress controller
官方k8s集群只能實現四層代理,imgress可以實現七層代理,也就是可以根據主機名,域名進行負載均衡。
k8s通常不會直接創建pod,而是通過controller來管理pod的。controller中定義了pod的部署特性,比如有幾個劇本,在什么樣的node上運行等。為了滿足不同的業務場景,k8s提供了多種controller,包括deployment、replicaset、daemonset、statefulset、job等。
  • deployment

#是最常用的controller deployment可以管理pod的多個副本,并確保pod按照期望的狀態運行。

  • replicaset

#實現了pod的多副本管理。使用deployment時會自動創建replicaset,也就是說deployment是通過replicaset來管理pod的多個副本的,我們通常不需要直接使用replicaset。

  • daemonset

#用于每個node最多只運行一個pod副本的場景。正如其名稱所示的,daemonset通常用于運行daemon。

  • statefuleset

#能夠保證pod的每個副本在整個生命周期中名稱是不變的,而其他controller不提供這個功能。當某個pod發生故障需要刪除并重新啟動時,pod的名稱會發生變化,同時statefulset會保證副本按照固定的順序啟動、更新或者刪除。

  • job

#用于運行結束就刪除的應用,而其他controller中的pod通常是長期持續運行的。

8)service
k8s的 service定義了外界訪問一組特定pod的方式。service有自己的IP和端口,service為pod提供了負載均衡。k8s運行容器pod與訪問容器這兩項任務分別由controller和service執行。
Service 有四種類型:
  • ClusterIP:默認類型,自動分配一個僅 cluster 內部可以訪問的虛擬 IP。
  • NodePort:在 ClusterIP 基礎上為 Service 在每臺機器上綁定一個端口,這樣就可以通過NodeIP:NodePort 來訪問該服務。如果 kube-proxy 設置了 –nodeport-addresses=10.240.0.0/16(v1.10 支持),那么僅該 NodePort 僅對設置在范圍內的 IP 有效。
  • LoadBalancer:在 NodePort 的基礎上,借助 cloud provider 創建一個外部的負載均衡器,并將請求轉發到 :NodePort。
  • ExternalName:將服務通過 DNS CNAME 記錄方式轉發到指定的域名(通過 spec.externlName 設定)。需要 kube-dns 版本在 1.7 以上。
9)namespace
可以將一個物理的cluster邏輯上劃分成多個虛擬cluster,每個cluster就是一個namespace。不同的namespace里的資源是完全隔離的。



k8s的集群部署
1. 基礎環境配置
#修改host。
vim /etc/hosts
10.0.0.50 k8s-master
10.0.0.51 k8s-node-01
10.0.0.52 k8s-node-02
#修改 10.0.0.50 服務器,設置 hostname,然后將 hostname 寫入 hosts。
$ hostnamectl set-hostname k8s-master
$ echo "127.0.0.1 $(hostname)" >> /etc/hosts
#修改 10.0.0.51 服務器,設置 hostname,然后將 hostname 寫入 hosts。
$ hostnamectl set-hostname k8s-node-01
$ echo "127.0.0.1 $(hostname)" >> /etc/hosts
#修改 10.0.0.52 服務器,設置 hostname,然后將 hostname 寫入 hosts。
$ hostnamectl set-hostname k8s-node-02
$ echo "127.0.0.1 $(hostname)" >> /etc/hosts
#時間同步:
systemctl start chronyd.service && systemctl enable chronyd.service
#關閉防火墻:
systemctl stop firewalld && systemctl disable firewalld
#關閉selinux:
setenforce 0
sed -i s/^SELINUX=enforcing$/SELINUX=disabled/ /etc/selinux/config
#禁用swap:
swapoff -a && sysctl -w vm.swappiness=0
vi /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
#配置內核參數:
$ cat < /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 10
EOF
#使配置生效:
#掛載 br_netfilter:
$ modprobe br_netfilter


#使配置生效:


$ sysctl -p /etc/sysctl.d/k8s.conf
#查看是否生成相關文件:
$ ls /proc/sys/net/bridge
#由于ipvs已經加入到了內核的主干,所以為kube-proxy開啟ipvs的前提需要加載以下的內核模塊:
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
$ cat > /etc/sysconfig/modules/ipvs.modules <#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
#執行腳本并查看是否正常加載內核模塊:
#修改腳本權限:
$ chmod 755 /etc/sysconfig/modules/ipvs.modules
#執行腳本:
$ bash /etc/sysconfig/modules/ipvs.modules
#查看是否已經正確加載所需的內核模塊:
$ lsmod | grep -e ip_vs -e nf_conntrack_ipv4
#安裝 ipset 和 ipvsadm:
$ yum install -y ipset ipvsadm
#配置資源限制:
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
echo "* soft nproc 65536" >> /etc/security/limits.conf
echo "* hard nproc 65536" >> /etc/security/limits.conf
echo "* soft memlock unlimited" >> /etc/security/limits.conf
echo "* hard memlock unlimited" >> /etc/security/limits.conf
#安裝依賴包以及相關工具:
yum install -y epel-release
yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools conntrack-
tools wget vim ntpdate libseccomp libtool-ltdl
#由于官方下載速度比較慢,所以需要更改 Docker 安裝的 yum 源,這里推薦用阿里鏡像源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker-ce.repo
#安裝指定版本 docker:
#注意:安裝前一定要提前查詢將要安裝的 Kubernetes 版本是否和 Docker 版本對應。
yum install -y docker-ce-18.09.9-3.el7
#設置鏡像存儲目錄,找到大點的掛載的目錄進行存儲:
$ vi /lib/systemd/system/docker.service
#找到這行,往后面加上存儲目錄,例如這里是 --graph /apps/docker:
ExecStart=/usr/bin/docker --graph /apps/docker
#配置 Docker 參數和鏡像加速器:
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
],
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file":"5"
}
}
EOF
#啟動 Docker:
$ systemctl start docker && systemctl enable docker
2. 安裝 kubelet、kubectl、kubeadm(全部節點)
  • kubelet: 在集群中的每個節點上用來啟動 pod 和 container 等;

  • kubectl: 用來與集群通信的命令行工具;

  • kubeadm: 用來初始化集群的指令。

注意安裝順序,一定不要先安裝 kubeadm,因為 kubeadm 會自動安裝最新版本的 kubelet 與kubectl,導致版本不一致問題。
#安裝 kubelet:
yum install -y kubelet-1.16.3-0
#安裝 kubectl:
yum install -y kubectl-1.16.3-0
#安裝 kubeadm:
yum install -y kubeadm-1.16.3-0
#啟動 kubelet 并配置開機啟動:
systemctl start kubelet && systemctl enable kubelet
#重啟全部節點:
reboot
3. kubeadm 安裝 kubernetes(Master 節點)
創建 kubeadm 配置文件 kubeadm-config.yaml,然后需要配置一些參數:
  • 配置 localAPIEndpoint.advertiseAddress 參數,調整為你的 Master 服務器地址;

  • 配置 imageRepository 參數,調整 kubernetes 鏡像下載地址為阿里云;

  • 配置 networking.podSubnet 參數,調整為你要設置的網絡范圍。

kubeadm-config.yaml
$ cat > kubeadm-config.yaml << EOF
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 10.0.0.50
bindPort: 6443
nodeRegistration:
taints:
- effect: PreferNoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: v1.16.3
networking:
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
EOF
kubeadm 初始化 kubernetes 集群:
kubeadm init --config kubeadm-config.yaml
部署日志信息:
......
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as
root:
kubeadm join 192.168.2.11:6443 --token 4udy8a.f77ai0zun477kx0p
--discovery-token-ca-cert-hash
sha256:4645472f24b438e0ecf5964b6dcd64913f68e0f9f7458768cfb96a9ab16b4212
在此處看日志可以知道,可以通過下面命令,添加 kubernetes 相關環境變量:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
工作節點加入集群(Work Node 節點):
根據上面 Master 節點創建 Kubernetes 集群時的日志信息,可以知道在各個節點上執行下面命令來讓工作節點加入主節點:
$ kubeadm join 192.168.2.11:6443 --token 4udy8a.f77ai0zun477kx0p 
--discovery-token-ca-cert-hash
sha256:4645472f24b438e0ecf5964b6dcd64913f68e0f9f7458768cfb96a9ab16b4212
如果上面 token 過期,則可以通過 kubeadm token create --print-join-command 命令重新獲取加入集群的指令。
4. 部署 Calico 網絡插件
下載 Calico 部署文件,并替換里面的網絡范圍為上面 kubeadm 中 networking.podSubnet 配置的值。
#下載 calico 部署文件:
$ wget https://docs.projectcalico.org/v3.10/getting-
started/kubernetes/installation/hosted/kubernetes-datastore/calico-
networking/1.7/calico.yaml
#替換 calico 部署文件的 IP 為 kubeadm 中的 networking.podSubnet 參數 10.244.0.0。
sed -i s/192.168.0.0/10.244.0.0/g calico.yaml
#部署 Calico 插件:
kubectl apply -f calico.yaml
#查看是否部署成功。
kubectl get pod -n kube-system


5. 配置 Kubectl 命令自動補全(Master 節點)

安裝補全工具:
yum install -y bash-completion
添加補全配置:
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
添加完成就可與通過輸入 kubectl 后,按補全鍵(一般為 tab)會自動補全對應的命令。



k8s的組件部署以及使用
1. 基本概念

1)Ingress
其中,Ingress資源通過yaml文件申明規則配置。
2)Ingress Controller
Ingress Controller 就是一個反向代理程序,它負責解析 Ingress 的反向代理規則,以Pod的形式運行,監控apiserver的/ingress端口后的backend services,如果 Ingress 有增刪改的變動,所有的 Ingress Controller 都會及時更新自己相應的轉發規則,當 Ingress Controller 收到請求后就會根據這些規則將請求轉發到對應的 Service。
核心是一個deployment,實現方式有很多,比如nginx, Contour, Haproxy, trafik, Istio,需要編寫的yaml有:Deployment, Service, ConfigMap, ServiceAccount(Auth),其中service的類型可以是NodePort或者LoadBalancer。
2. 組件部署
為了讓Ingress Controller正常啟動,需要給它配置一個默認的backend,用于當客戶端訪問的URL地址不存在時,能夠返回一個正確的404應答。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: default-http-backend
labels:
k8s-app: default-http-backend
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
k8s-app: default-http-backend
spec:
terminationGracePeriodSeconds: 60
containers:
- name: default-http-backend

 
# Any image is permissable as long as:
# 1. It serves a 404 page at /
# 2. It serves 200 on a /healthz endpoint
image: 192.168.121.140:5000/defaultbackend
livenessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
ports:
- containerPort: 8080
resources:
limits:
cpu: 10m
memory: 20Mi
requests:
cpu: 10m
memory: 20Mi
---
apiVersion: v1
kind: Service
metadata:
name: default-http-backend
namespace: kube-system
labels:
k8s-app: default-http-backend
spec:
ports:
- port: 80
targetPort: 8080
selector:
k8s-app: default-http-backend
創建backend:
kubectl apply -f default-backend.yaml
下載deploy.yaml:
#訪問網站下載文件
https://github.com/kubernetes/ingress-nginx/blob/controller-
v0.48.1/deploy/static/provider/baremetal/deploy.yaml

#部署ingress-nginx
kubectl apply -f deploy.yaml
看看pod是否正常啟動:
kubectl get pods -n ingress-nginx
創建ingress:
#ingress_test.yaml
apiVersion: extensions/v1beta1

 
kind: Ingress
metadata:
name: ingress-test
annotations:
kubernetes.io/ingress.class: "nginx"
# 開啟use-regex,啟用path的正則匹配
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
# 定義域名
- host: test.ingress.com
http:
paths:
# 不同path轉發到不同端口
- path: /
backend:
serviceName: nginx-controller
servicePort: 8000
創建ingress:
kubectl apply -f ingress_test.yaml
創建nginx軟件服務:
vim nginx-rc.yaml
apiVersion: v1
kind: Deployment
metadata:
name: nginx-controller
spec:
replicas: 2
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
cat nginx-server-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service-nodeport
spec:
ports:
- port: 8000
targetPort: 80
protocol: TCP
type: NodePort

 
selector:
name: nginx
#創建pod以及service
kubectl apply -f nginx-rc.yaml
kubectl apply -f nginx-server-nodeport.yaml
通過curl訪問對應nginx:
curl -i test.ingress.com
HTTP/1.1 200 OK





本文作者:王文權

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129561.html

相關文章

  • Kubernetes 入門基礎

    摘要:我們要學習,就有首先了解的技術范圍基礎理論知識庫等,要學習,肯定要有入門過程,在這個過程中,學習要從易到難,先從基礎學習。組件組件一個集群是由一組被稱為節點的機器或虛擬機組成,節點有兩種類型。我們要學習 Kubernetes,就有首先了解 Kubernetes 的技術范圍、基礎理論知識庫等,要學習 Kubernetes,肯定要有入門過程,在這個過程中,學習要從易到難,先從基礎學習。 接...

    myshell 評論0 收藏0
  • 都9102年了,還不會Docker?10分鐘帶你從入門操作到實戰上手

    摘要:聯調測試,無需依賴他人。針對以上問題,有兩種解決方法,一個是自己搭建私有服務,另一個是用云服務的鏡像管理平臺如阿里云的容器鏡像服務。利用,先對阿里云的服務進行登錄。推送后,就能在阿里云的倉庫上看到這個鏡像。 Docker簡述 Docker是一種OS虛擬化技術,是一個開源的應用容器引擎。它可以讓開發者將應用打包到一個可移植的容器中,并且該容器可以運行在幾乎所有linux系統中(Windo...

    sf_wangchong 評論0 收藏0
  • 靈雀云K8s培訓走進『招商銀行』總部

    摘要:月日日,靈雀云企業定制培訓在深圳招商銀行總部圓滿結束。靈雀云培訓中強調理論實踐工具落地相結合。靈雀云是官方認證培訓合作伙伴服務提供商。不久之后,靈雀云還將推出微服務的培訓課程。 showImg(https://segmentfault.com/img/bVblpFV?w=600&h=334); 12月13日-14日,靈雀云企業定制k8s培訓在深圳招商銀行總部圓滿結束。 來自招行總部信息...

    xcc3641 評論0 收藏0
  • 利用K8S技術棧打造個人私有云(連載之:基礎鏡像制作與實驗)

    摘要:因此本篇博文將講解如何在本地構建一個帶組件的底包鏡像并上傳到上供下載使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技術棧打造個人私有云系列文章目錄】 利用K8S技術棧打造個人私有云(連載之:初章) 利用K8S技術棧打造個人私有云(連載之:K8S集群搭建) 利用K8S技術棧打造個人私...

    tabalt 評論0 收藏0
  • 利用K8S技術棧打造個人私有云(連載之:基礎鏡像制作與實驗)

    摘要:因此本篇博文將講解如何在本地構建一個帶組件的底包鏡像并上傳到上供下載使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技術棧打造個人私有云系列文章目錄】 利用K8S技術棧打造個人私有云(連載之:初章) 利用K8S技術棧打造個人私有云(連載之:K8S集群搭建) 利用K8S技術棧打造個人私...

    hot_pot_Leo 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<