日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【云原生】Kubernetes(k8s)Calico 客户端工具 calicoctl

發布時間:2024/3/13 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【云原生】Kubernetes(k8s)Calico 客户端工具 calicoctl 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、概述
    • 二、calicoctl 安裝
    • 三、calicoctl 簡單使用
      • 1)認證信息配置
      • 2)查看 IP 資源池
      • 3)配置 IP 池
      • 4)IP 資源池示例演示
      • 5)固定 IP 示例演示
      • 6)網絡策略(NetworkPolicy)
    • 四、Kube-ipam
      • 1)安裝kube-ipam
      • 2)子網和etcd配置
      • 3)固定IP示例演示

一、概述

calicoctl 是 Calico 客戶端管理工具。 可以方便的管理 calico 網絡,配置和安全策略,calicoctl 命令行提供了許多資源管理命令,允許您創建,修改,刪除和查看不同的 Calico 資源,網絡資源包含:node,bgpPeer,hostEndpoint,workloadEndpoint,ipPool,policy,profile等。

官方文檔:https://projectcalico.docs.tigera.io/reference/calicoctl/
關于Calico 可以參考我這篇文章:Kubernetes(k8s)CNI(Calico)網絡模型原理

二、calicoctl 安裝

wget https://github.com/projectcalico/calico/releases/download/v3.24.5/calicoctl-linux-amd64 mv calicoctl-linux-amd64 /usr/local/bin/calicoctl chmod +x /usr/local/bin/calicoctl# 查看 calicoctl version

三、calicoctl 簡單使用

calicoctl通過讀寫calico的數據存儲系統(datastore)進行查看或者其他各類管理操作,通常,它需要提供認證信息經由相應的數據存儲完成認證。在使用Kubernetes API數據存儲時,需要使用類似kubectl的認證信息完成認證。它可以通過環境變量聲明的DATASTORE_TYPE和KUBECONFIG接入集群,例如以下命令格式運行calicoctl:

1)認證信息配置

export KUBECONFIG=/path/to/your/kubeconfig export DATASTORE_TYPE=kubernetes# 查看幫助 calicoctl --help # 查看calico節點 calicoctl get nodes

2)查看 IP 資源池

calicoctl get ipPools calicoctl get ipPool -o yaml

3)配置 IP 池

IP 池 是 Calico 使用的 IP 地址范圍 工作負載終端節點。

定義兩個在此群集中使用的 IP 池。 您可以僅使用一個 池,但我們定義了兩個,編排操作如下:

cat > pool1.yaml <<EOF apiVersion: projectcalico.org/v3 kind: IPPool metadata:name: pool1 spec:cidr: 10.245.1.0/24ipipMode: NevernatOutgoing: truedisabled: falsenodeSelector: all() EOFcat > pool2.yaml <<EOF apiVersion: projectcalico.org/v3 kind: IPPool metadata:name: pool2 spec:cidr: 10.245.2.0/24ipipMode: NevernatOutgoing: truedisabled: truenodeSelector: all() EOF

執行并查看

# 先查看IP資源池 calicoctl get ipPools# 創建兩個IP資源池 calicoctl create -f pool1.yaml calicoctl create -f pool2.yaml# 查看 calicoctl get ipPools


如果使用kubectl創建,就必須查詢apiVersion和kind

# 先刪除上面新建的兩個ip資源池 calicoctl delete -f pool1.yaml calicoctl delete -f pool2.yaml calicoctl get ipPools# 未修改前執行,發現是無法匹配對應的kind kubectl create -f pool1.yaml# 查看apiVersion kubectl api-versions|grep calico # 查看kind kubectl api-resources -o wide|grep calico|grep IPPool


修改

# 這里只需要把apiVersion換掉既可 cat > pool3.yaml <<EOF apiVersion: crd.projectcalico.org/v1 kind: IPPool metadata:name: pool3 spec:cidr: 10.245.3.0/24ipipMode: NevernatOutgoing: truedisabled: falsenodeSelector: all() EOFcat > pool4.yaml <<EOF apiVersion: crd.projectcalico.org/v1 kind: IPPool metadata:name: pool4 spec:cidr: 10.245.4.0/24ipipMode: NevernatOutgoing: truedisabled: truenodeSelector: all() EOF# 先查看ip資源池 calicoctl get ipPools# 執行 kubectl create -f pool3.yaml kubectl create -f pool4.yaml

4)IP 資源池示例演示

利用注解cni.projectcalico.org/ipv4pools。

cat > ipv4pools-deployment-test.yaml <<EOF # apiVersion: projectcalico.org/v3 apiVersion: crd.projectcalico.org/v1 kind: IPPool metadata:name: new-pool1 spec:blockSize: 31cidr: 10.244.3.220/24ipipMode: NevernatOutgoing: true --- # apiVersion: projectcalico.org/v3 apiVersion: crd.projectcalico.org/v1 kind: IPPool metadata:name: new-pool2 spec:blockSize: 31cidr: 10.244.4.221/24ipipMode: NevernatOutgoing: true --- apiVersion: apps/v1 kind: Deployment metadata:name: fixed-ip-test2namespace: defaultlabels:k8s-app: cloudnativer-test spec:replicas: 3strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1selector:matchLabels:k8s-app: cloudnativer-testtemplate:metadata:labels:k8s-app: cloudnativer-testannotations:# 【注意】不能使用單引號"cni.projectcalico.org/ipv4pools": "[\"new-pool1\",\"new-pool2\"]"spec:containers:- name: fixed-ip-testimage: nginx:1.7.9imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80 EOF

5)固定 IP 示例演示

利用注解 cni.projectcalico.org/ipAddrs

# vi fixed-ip-test-deployment.yaml --- apiVersion: apps/v1 kind: Deployment metadata:name: fixed-ip-testnamespace: defaultlabels:k8s-app: cloudnativer-test spec:replicas: 1strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1selector:matchLabels:k8s-app: cloudnativer-testtemplate:metadata:labels:k8s-app: cloudnativer-testannotations:cni.projectcalico.org/ipAddrs: "[\"10.244.1.220\"]"spec:containers:- name: fixed-ip-testimage: nginx:1.7.9imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80

6)網絡策略(NetworkPolicy)

網絡策略資源 (NetworkPolicy) 表示應用的一組有序規則 到與 標簽選擇器。NetworkPolicy 是命名空間資源。 NetworkPolicy 在特定命名空間中 僅適用于 工作負載終端節點資源 在該命名空間中。兩個資源位于同一命名空間中,如果 namespace 兩者上的值設置相同。 看 全局網絡策略資源 對于非命名空間網絡策略。

【示例】此示例策略允許來自 TCP 流量 frontend 端口 6379 的終結點 database 端點。

# vim networkpolicy-test.yaml apiVersion: projectcalico.org/v3 kind: NetworkPolicy metadata:name: allow-tcp-6379namespace: production spec:selector: role == 'database'types:- Ingress- Egressingress:- action: Allowmetadata:annotations:from: frontendto: databaseprotocol: TCPsource:selector: role == 'frontend'destination:ports:- 6379egress:- action: Allow

執行

kubectl create ns production calicoctl create -f networkpolicy-test.yaml # 查看 calicoctl get networkPolicy --namespace=production -oyaml

想了解更多網絡策略,可以查看官方文檔:https://projectcalico.docs.tigera.io/reference/resources/networkpolicy

四、Kube-ipam

Kube-ipam 基于etcd分布式存儲實現kubernetes動態IP網絡分配管理,確保集群中IP地址的唯一性。Kube-ipam支持給kubernetes集群中的Pod固定IP地址,同時支持resolv.conf的DNS配置。這個需要基于網絡插件(例如:macvlan、ipvlan、kube-router、bridge、calico等),這里就使用calico網絡插件來實現。

一些場景往往對IP地址有依賴,需要使用固定IP地址的Pod,可以使用kube-ipam輕松解決這類問題。例如,mysql主從架構的時候,主database與從database之間的同步;例如keepalived做集群HA的時候,兩個節點之間檢測通信等;例如某些安全防護設備,需要基于IP地址進行網絡安全訪問策略限制的場景等。

GitHub地址:https://github.com/cloudnativer/kube-ipam

1)安裝kube-ipam

請確保你的kubelet正確的配置了network-plugin、cni-conf-dir 和 cni-bin-dir 參數。下面給出一個kubelet的配置示例供你參考:

# vi /usr/lib/systemd/system/kubelet.service # ... ExecStart=/usr/local/bin/kubelet \ --network-plugin=cni \ --cni-conf-dir=/etc/cni/net.d \ --cni-bin-dir=/opt/cni/bin/ \# 重啟kubelet systemctl daemon-reload systemctl restart kubelet

下載安裝 kube-ipam

wget https://github.com/cloudnativer/kube-ipam/releases/download/v0.2.0/kube-ipam-v0.2.0-x86.tgz tar -zxvf kube-ipam-v0.2.0-x86.tgz mv kube-ipam/kube-ipam /opt/cni/bin/kube-ipam

2)子網和etcd配置

你可以通過 subnet 參數設置IP子網信息,通過 gateway 設置網關信息。你可以通過 etcdConfig 配置etcd的證書和endpoint地址。編輯所有kubernetes node主機的 /etc/cni/net.d/1-kube-ipam.conf 文件。

# 類型 #"type": "calico", # 主網卡名稱 #"master": "ens33", # cat /etc/cni/net.d/1-kube-ipam.conf {"cniVersion":"0.3.1","name": "k8snetwork","type": "calico","master": "ens33","ipam": {"name": "kube-subnet","type": "kube-ipam","kubeConfig": "/etc/kubernetes/pki/kubectl.kubeconfig""etcdConfig": {"etcdURL": "https://192.168.1.50:2379,https://192.168.1.58:2379,https://192.168.1.63:2379","etcdCertFile": "/etc/kubernetes/pki/etcd.pem","etcdKeyFile": "/etc/kubernetes/pki/etcd-key.pem","etcdTrustedCAFileFile": "/etc/kubernetes/pki/ca.pem"},"subnet": "10.188.0.0/16","fixedStart": "10.188.0.10","fixedEnd": "10.188.0.255","rangeStart": "10.188.1.0","rangeEnd": "10.188.255.254","gateway": "10.188.0.1","routes": [{"dst": "0.0.0.0/0"}],"resolvConf": "/etc/resolv.conf"} }

3)固定IP示例演示

# cat fixed-ip-test-Deployment.yaml --- apiVersion: apps/v1 kind: Deployment metadata:name: fixed-ip-testnamespace: defaultlabels:k8s-app: cloudnativer-test spec:replicas: 1strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1selector:matchLabels:k8s-app: cloudnativer-testtemplate:metadata:labels:k8s-app: cloudnativer-testannotations:kube-ipam.ip: "10.188.0.216"kube-ipam.netmask: "255.255.0.0"kube-ipam.gateway: "10.188.0.1"spec:containers:- name: fixed-ip-testimage: nginx:1.7.9imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80 ---

這里沒有真正的去驗證,只是稍微說一下,還可以通過kube-ipam進行固定IP配置,有興趣的小伙伴可以去試試;Calico 客戶端工具 calicoctl簡單使用就先到這里了,有任何疑問歡迎給我留言,后續會持續更新【云原生+大數據】相關的文章~

總結

以上是生活随笔為你收集整理的【云原生】Kubernetes(k8s)Calico 客户端工具 calicoctl的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。